Java Regex - сопоставить несколько строк, которые не заканчиваются символом - PullRequest
0 голосов
/ 10 января 2020

Если данные занимают несколько строк, они заканчиваются на "; ", но может быть текст комментария, который включает в себя "; ".

This is test
b=4
/* a=b+c; */
b=5
c=7
/* a=b-c; */
a=b*c;

I пробовал с этим регулярным выражением.

(This is test).+?;

Возвращает

This is test
b=4
/* a=b+c;

Я хочу знать правильное регулярное выражение для всего совпадения текста.

1 Ответ

0 голосов
/ 10 января 2020

Поскольку вы пытаетесь игнорировать разрывы строк и определяете ; в качестве пользовательского ограничителя строки, лучше всего использовать String#split(String). Попробуйте следующий шаблон:

\;(?!\s*\*\/)

Если я использую его с вашей строкой:

String str = "This is test"
+"\nb=4"
+"\n/* a=b+c; */"
+"\nb=5\nc=7"
+"\n/* a=b-c; */"
+"\na=b*c;";

for(String s : str.split("\\;(?!\\s*\\*\\/)")) {
    System.out.println(s);
}

Я получу следующий вывод:

This is test
b=4
/* a=b+c; */
b=5
c=7
/* a=b-c; */
a=b*c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...