Задать вопрос
bit_rainbow
@bit_rainbow

Как написать Regexp с условием в Java?

Хочу распарсить смс сообщение через программу sms parser. Она умеет разбирать регулярные выражение в формате java.
Большого опыта в регулярках нет. Потому и возник это вопрос.

Есть такой текст:
"100.00UAH Znyattya gotivki v bankomati WWWW, SSDSD
4*35 12:11
Bal. 1111.52UAH"

Что я хочу вытянут регулярной:
если в тексте есть выражение "4*35", то нужно вытянуть 100.00UAH (количество цифр не статично может быть и 1 или 2 или 3... ).

Такое вообще можно сделать регулярной? если да, очень хотелось бы помощь.

Почитал про регулярки с условием, все что у меня получилось: вытянуть 1111.52UAH если есть 4*35". Вытянуть же 100.00UAH если есть 4*35 не получается.
  • Вопрос задан
  • 237 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 3
@heartdevil
плыву как воздушный шарик
Привет.

Попробуйте такую регулярку
Не факт, что для java сработает, так как в онлайн редакторе имеется только php/javascript/python

/([\d.]+UAH)[\s\S]+(?=(4\*35))[\s\S]+\s(?(2)([\d.]+UAH))/

Но вытаскивает то, что вам надо из одной смс-ки

UPDATE:
Вот эта регулярка вытаскивает сумму в java

([\d.]+UAH)[\s\S]+(?=4\*35)[\s\S]+\s(?!4\*35)([\d.]+UAH)
Ответ написан
@moryakov
я так понял, нужно с начала первой строки вытянуть сумму снятия?
"^(\\d+.\\d{2}UAH)(?:.+)(?=(\\n|\\s|\\r\\n4\\*35))"
потестируйте на различных входных
Ответ написан
saboteur_kiev
@saboteur_kiev
software engineer
(\d+\.\d+)UAH.*\n4\*35

Протестируйте тут (нужно установить флаги gm)
https://regex101.com/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы