Объединить несколько строк в регулярном выражении, если они разделены ничем или пробелами - PullRequest
1 голос
/ 25 марта 2020

Я новичок в regex, и в настоящее время у меня возникает проблема при сопоставлении нескольких последовательных строк.

Я хочу сопоставить строки: "this is a string". Мне удалось это сделать.

Однако я также хотел бы сопоставить несколько строк, если они объединены или разделены только пробелами: "this""is a string" или "this" "is" "one string".

Проблема, с которой я сталкиваюсь, заключается в том, что если Я пытаюсь сделать это, я также сопоставляю "this" as "a string" (обратите внимание на совпадение as, это должны быть две отдельные строки).

Я использую flexc ++, поэтому я не могу использовать более причудливые регулярные выражения, такие как lookahead.

В настоящее время я определил строку как (я использовал несколько разных определений, это, кажется, самое простое):

string      \"(.*?)\"

, а затем попробуйте сопоставить кратные значения, используя:

{string}[ \t]*{string}* 

1 Ответ

1 голос
/ 25 марта 2020

Это должно работать \"[^\"]*\"([ \t]*\"[^\"]*\")*

Или, если дать определение строки:

string          \"[^\"]*\"
concat_strings  {string}([ \t]*{string})*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...