0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 35
1

Регулярное выражение для денежной суммы

18.03.2016, 12:09. Показов 5403. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья. Всем доброго времени суток =)
Бьюсь с регуляркой уже пол часа, хотя вопрос очень смешной)

В тексте встречаются различные суммы, вроде:
+71 руб.
-213 123 руб.
+1 123 492 руб.
+1 102 руб.

Какую можно настряпать регулярочку, кот. бы выбирала суммы, начиная с [-|+] и до "руб." Помогите подобрать что-то коротенькое, вроде: [-|+](\d+\s){1,2}руб\.
Всем спасибо за внимание!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2016, 12:09
Ответы с готовыми решениями:

Регулярное выражение для телефона
Доброго времени суток. Мне нужно регулярное выражение, чтобы перебирать операторы телефонов, к...

Регулярное выражение для роутера
Всем привет, плиз помогите разобрать вот такой урл http://autozab.com/type/?=tyagachi нужно...

Регулярное выражение для домена
определенный текст разбивается на предложения после точки но так же там может встретиться название...

Регулярное выражение для ЧПУ
Здравствуйте я делаю себе блог и хочу себе урл вида mysite.ru/category/post, как мне его разбить на...

9
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
18.03.2016, 12:19 2
PHP
1
[+-][\d\s]+?руб\.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
echo "<pre/>";
    $text = '
    +71 руб.dw dw dw dw dw dw
-213 123 руб. dwdwd wdwd dw
+1 123 492 руб.
+1 102 руб.в вцвцв цв цв цв +1 102 руб. вцвцвц вц в dwdwd
wdwdwd 1.12
    ';
    preg_match_all("~[+-][\d\s]+?руб\.~",$text,$m);
    print_r($m[0]);
?>
Добавлено через 7 минут
Цитата Сообщение от LungDesire Посмотреть сообщение
Бьюсь с регуляркой уже пол часа

Не по теме:

мало :D

1
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 35
18.03.2016, 12:31  [ТС] 3
)) Регулярка на regex101.com видно, что рабочая) На сайте не пашет) Походу у меня где-то синтаксическая ошибка.. Спасибо за регулярку =)
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,211
18.03.2016, 17:47 4
Цитата Сообщение от Azdeman Посмотреть сообщение
preg_match_all("~[+-][\d\s]+?руб\.~",$text,$m);
а что тут в $m пойдёт?
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
18.03.2016, 19:43 5
Цитата Сообщение от полудух Посмотреть сообщение
а что тут в $m пойдёт?
все совпадения.
Будет массив.
+71 руб.
-213 123 руб.
+1 123 492 руб.
+1 102 руб.
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,211
18.03.2016, 20:06 6
Цитата Сообщение от Azdeman Посмотреть сообщение
все совпадения.
Будет массив.
скобок то нету
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
18.03.2016, 20:32 7
Цитата Сообщение от полудух Посмотреть сообщение
скобок то нету
Да нет. А зачем они? я ищу совпадения. мне не нужно групировать например числа без точки отдельно.
Разберем пример 1.2
(\d)\.(\d); // будет совпадение полностью 1.2 и отдельно будут ключи массива с 1 и 2.

PHP
1
2
3
4
5
6
Array
(
    [0] => 1.2
    [1] => 1
    [2] => 2
)
PHP
1
~\d\.\d ~
в этом случае будет совпадение 1.2 но так как нет групировки отдельных элементов не будет
PHP
1
2
3
4
Array
(
    [0] => 1.2
)
И еще замете там я использовал Preg_match_all - глобальный поиск. В том примере мне не нужно было выносить руб в отдельный элемент или + в отдельный элемент
Как смог объяснил.
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,211
18.03.2016, 22:10 8
я понял, что там целиком всё захватит
просто в ТЗ:
Цитата Сообщение от LungDesire Посмотреть сообщение
начиная с [-|+] и до "руб."
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
18.03.2016, 23:02 9
Цитата Сообщение от полудух Посмотреть сообщение
я понял, что там целиком всё захватит
просто в ТЗ:
Сообщение от LungDesire
начиная с [-|+] и до "руб."
Ну всё правильно так и захватило от + и до руб!!! плюc, потом идёт число, пробелы, и конец руб. от и до захватили.
Цитата Сообщение от Azdeman Посмотреть сообщение
+71 руб.
-213 123 руб.
+1 123 492 руб.
+1 102 руб.
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,211
18.03.2016, 23:18 10
не, до руб. это вот так всё-таки:
+1 123 492
ну он же сам пишет в ТЗ:
PHP
1
[-|+](\d+\s){1,2}руб\.
вон он скобками выделил, что ему надо только цифры
0
18.03.2016, 23:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2016, 23:18
Помогаю со студенческими работами здесь

Регулярное выражение для строки
Здравствуйте. Есть строка /login?nick=sanych&amp;refer=http://site.com/ и еще одна...

Регулярное выражение для замены
Привет всем! Нужно регулярное выражение.. Оно должно проверять переменную $source на незакрытый...

Регулярное выражение для ссылки
Здравствуйте. Со страницы нужно достать все url-ы для этого использую preg_match_all() . Но с...

Регулярное выражение для урл
Здравствуйте, уважаемые специалисты. Есть переменная $url_forum, она может принимать примерно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru