Автор Тема: Регулярные выражения??? <Help>  (Прочитано 4145 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Нong

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.hong.de
Регулярные выражения??? <Help>
« : 26 Августа 2003, 02:19:39 »
Привет всем.

У меня вопрос по регулярным выражениям.

Есть разные числа примерно такого формата, которые я  считываю из файла, в зависемости от того што ввел ползователь в форму.

(запятые могут быть и апострофами -> \' )
9,202.17
46,760.0
567,875.0

1,415,426
82,710,000
153,885,115

0.71360
92.02172
126.110

Для части етого кода я использовал:
$pattern = "/(\\d+\\.*\\d+|\\d*\\\'\\d*\\\'*\\d*|\\d*\\\'\\d*)/";
preg_match_all($pattern, $file, $vivod)
print_r($vivod);
// возможный вывод
echo $var = $vivod[0][0];

У меня никак неполучается изменить ето регулярное выражение так, штобы без всяких if-цыклов можно было найти в тексте правилное число. Вывод должен быть всегда равен одному масиву к примеру:

echo $var = $vivod[0][0];
Всё должно происходить в одном регулярном выражение (возможно ли ето вообше)?

Етой частью кода $pattern = "/(\\d+\\.*\\d+|\\d*\\\'\\d*\\\'*\\d*)/";
я могу находить к примеру числа такого формата:
1.0872
10.87200
108.720
или за счет соединения с  |\\d*\\\'\\d*\\\'*\\d*

Но штобы к примеру получить такое число 46’760.0 мне приходится использовать:
$pattern ="/\\d*\\\'\\d*/";
Если я добавляю ету часть кода как третие соединение то получаю толко первые два числа до запятой или апострофы или даже ничего, т.к первые два выражения перехватывают значение.

Если кто силён в рег. выражениях помагите пожалуйста.

Cпасибо.
Cu.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Регулярные выражения??? <Help>
« Ответ #1 : 26 Августа 2003, 03:36:15 »
Нong
зачем позволять пользователю вводить числа в различном формате ?

Если по существу, то может попрбовать поэкспериментировать с началом/концом (^/$)строк:
$pattern = "/(^\\d+\\.*\\d+$|^\\d*\'\\d*\'*\\d*$|^\\d*\'\\d*$)/";
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Bublic

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Регулярные выражения??? <Help>
« Ответ #2 : 26 Августа 2003, 09:31:24 »
Если регулярное выражение все равно должно складывать такие кривые "числа" в массив, то может сделать проще: /(\\d+.*)/
Ну, а если нужно контролировать "правильность" введенных "чисел", то можно попробовать так: /((\\d+[\\.\',])+\\d*)/, хотя как ты будешь потом из такого пользовательского ввода действительно правильные числа получать мне непонятно.

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Регулярные выражения??? <Help>
« Ответ #3 : 26 Августа 2003, 12:19:49 »
Цитировать
Нong:
Но штобы к примеру получить такое число 46’760.0 мне приходится использовать:

$data=str_replace("\'", "", $data);
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Hong

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.hong.de
Регулярные выражения??? <Help>
« Ответ #4 : 26 Августа 2003, 12:49:05 »
Привет.

Обьеснение:

Мы получили разрешение использовать на одной из нашых страниц актуалный курс валют различных банков, вот с этой странице:
http://www.oanda.com/convert/classic?lang=en

Я сделал точно такой же формуляр, толко после того как пользователь выбирает валюту в нашем формуляре и нажымает кнопку, происходит соединение с этой страницой. Нужную валюту я с помощью регулярных выражений вытаскиваю и показываю на нашей странице.
К примеру если перевести доллар в евро на их странице, то вывод будет таким:
1 US Dollar = 0.91988 Euro, мне нужно вывести на моей странице 0.91988 (также и к каждей валюте)
Проблема в том што валюта у них в разных форматах и стран болше ста, поетому мне бы не хотелось писать для каждой страны по регулярному выражению.

Теперь я думаю ситуация есна, проблема толко в рег. выр.

Cпаcибо.
Cu.

Оффлайн Нong

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.hong.de
Регулярные выражения??? <Help>
« Ответ #5 : 27 Августа 2003, 02:28:43 »
Больше помощи не надо я всё сделал. ;=)

Cu.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28