Проблема с подходящим выражением Regex - PullRequest
0 голосов
/ 30 октября 2018

Мне нужно сопоставить текст, подобный следующему тексту в операторе if.

REG#John Smith#14102245862#7 johns road new york#John Anthony Smith

Выражение должно соответствовать ключевому слову REG в начале строки, затем имени пользователя, за которым следует номер счета, состоящий из чисел без каких-либо конкретных ограничений на количество цифр, затем адрес и, наконец, имя отдельного лица. адрес зарегистрирован на.

Выражение Regex, которое я придумал, не работает. Выражение регулярного выражения ниже:

^REG\#\w\#[0-9]\#\w\#\w

Можете ли вы помочь мне показать, где я ошибся и как заставить это работать. Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Попробуйте ^REG\#.*?\#[0-9]*?\#.*?\#.*, оператор *? означает повтор до следующего фрагмента выражения, в этом случае, \#

0 голосов
/ 30 октября 2018

Проблема в том, что вы не используете квантификаторы (* или +), и пробел не входит в \w, что означает [A-Za-z0-9_]. Символ # не нужно экранировать (по крайней мере, насколько я знаю в Java). Попробуйте следующее Regex :

^REG#[\w ]+#\d+#[\w ]+#[\w ]+
  • ^REG соответствует началу строки (REG) буквально
  • # соответствует буквально
  • [\w ]+ обозначает хотя бы один символ слова или пробел
  • \d+ обозначает хотя бы одну цифру

В Java не забудьте двойное экранирование:

String regex = "^REG#[\\w ]+#\\d+#[\\w ]+#[\\w ]+";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...