Программирование > Регулярные выражения

Регулярные выражения??? <Help>

(1/2) > >>

Нong:
Привет всем.

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

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

(запятые могут быть и апострофами -> \' )
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.

Макс:
Нong
зачем позволять пользователю вводить числа в различном формате ?

Если по существу, то может попрбовать поэкспериментировать с началом/концом (^/$)строк:
$pattern = "/(^\\d+\\.*\\d+$|^\\d*\'\\d*\'*\\d*$|^\\d*\'\\d*$)/";

Bublic:
Если регулярное выражение все равно должно складывать такие кривые "числа" в массив, то может сделать проще: /(\\d+.*)/
Ну, а если нужно контролировать "правильность" введенных "чисел", то можно попробовать так: /((\\d+[\\.\',])+\\d*)/, хотя как ты будешь потом из такого пользовательского ввода действительно правильные числа получать мне непонятно.

Alexandr:

--- Цитировать ---Нong:
Но штобы к примеру получить такое число 46’760.0 мне приходится использовать:
--- Конец цитаты ---

$data=str_replace("\'", "", $data);

Hong:
Привет.

Обьеснение:

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

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

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

Cпаcибо.
Cu.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

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 
Перейти к полной версии