Необходимо сопоставить несколько подстрок в строке с одним шаблоном регулярных выражений - PullRequest
0 голосов
/ 15 января 2019

У меня есть 2 строки:

string1 = 'this is a beautiful string'
string2 = 'this is not a beautiful string'

Я пытаюсь найти шаблон Regex, который разделяет две строки следующим образом:

string1 -> ['this is a', 'string']
string2 -> ['this is a', 'string']

шаблон Regex, который я пытаюсьчтобы найти слова ГРУПП рядом друг с другом

самое близкое, что я смог сделать, это:

pattern = r'(this)? \s* (is)? \s* (\ba)? \s* (string)?'

, который возвращает:

['this is a ', '', '', '', '', '', '', '', '', '', ' string', '']

1 Ответ

0 голосов
/ 18 января 2019

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

(?:\b(?:this|is|a|string)\s*)+(?<!\s)

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

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