Помогите с регулярным выражением Java - PullRequest
0 голосов
/ 13 января 2011
"^[\\s]*DISPLAY.*?(\".*?\").*?\\."

У меня есть вышеприведенное регулярное выражение. Однако у меня есть проблема с этим.

DISPLAY AC-YEAR LINE 2 POSITION 68 REVERSE.

Эта строка записана не так, как должна.

DISPLAY "EATING.FOOD" LINE 13 POSITION 31 REVERSE.

Это успешно захвачено.

Я не могу понять, как мне написать регулярное выражение.

"^[\\s]*DISPLAY.*?(\".*?\")  *,?,??       .*?\\.

Установка квантификаторов после ) не работает. Он даже не захватывает группу.

Ответы [ 3 ]

2 голосов
/ 13 января 2011

Регулярному выражению нужна пара кавычек ("), присутствующих после слова DISPLAY. Вот почему первое не работает.

Если вам нужно первое слово без пробелов после DISPLAY (все, что находится между DISPLAY и LINE, должно работать:

^[\\s]*DISPLAY\\s*?(\".*?\"|.*?)\\s*?LINE.*?\\.
0 голосов
/ 13 января 2011

Это должно работать, чтобы захватить AC-YEAR и "EATING.FOOD", при этом сопоставляя всю строку:

^\\s*DISPLAY\\s(.*?)\\s.*\\.$

Обратите внимание, что $ соответствует концу строки, поэтому буквенная точка \\. будет соответствовать только в конце.

Если вы хотите захватить все после DISPLAY, это должно сделать это:

^\\s*DISPLAY\\s(.*?)\\.$
0 голосов
/ 13 января 2011

Первая строка не соответствует регулярному выражению, поскольку (\".*?\") соответствует чему-либо между начальным и конечным квотами, чего нет в вашей строке.Я предлагаю вам проверить свое регулярное выражение здесь http://www.regexplanet.com/simple/index.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...