Регулярное выражение для следующего - PullRequest
1 голос
/ 05 ноября 2010

У меня есть файл с тегами, в котором могут быть следующие записи #

<test> <code> abcd </code> </test>
<test> efgh </test> 

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

Ответы [ 2 ]

1 голос
/ 06 ноября 2010

Попробуйте

Pattern regex = Pattern.compile("<test>(.*?)</test>", Pattern.DOTALL);

Однако это не получится, если сами теги <test> могут быть вложенными (<test> ... <test>...</test> ... </test>).

? делает предыдущий * квантификатор ленивым, т.е. е. он будет соответствовать как можно меньшему количеству символов и поэтому будет соответствовать только одному тегу за раз.

0 голосов
/ 05 ноября 2010

Попробуйте регулярное выражение:

"\\bstart-tag:test\\s+(.*?)\\s+end-tag:test\\b"

Важным моментом является то, что ? здесь означает, что совпадение не должно быть жадным, иначе оно может захватывать несколько тегов.

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