соответствие строки регулярного выражения в Python 3 игнорирует пробелы и string.punctuation - PullRequest
0 голосов
/ 10 ноября 2018

Я новичок в regex и хотел бы знать, как сопоставить две строки. Вариант использования будет что-то вроде нахождения определенной фразы в каком-либо тексте. Я использую Python 3.7, если это имеет значение.

phrase = "some phrase" #the phrase I'm searching for

Возможные совпадения:

text = "some#@$#phrase"
            ^^^^ #non-alphanumeric can be treated like a single space
text = "some   phrase"
text = "!!!some!!! phrase!!!"

Это не совпадения:

text = "some phrases"
                   ^ #the 's' on the end makes it false
text = "ssome phrase"
text = "some other phrase"

Я пытался использовать что-то вроде:

re.search(r'\b'+phrase+'\b', text)

Я был бы очень признателен за объяснение того, почему регулярное выражение работает, если вы предоставите правильное решение.

1 Ответ

0 голосов
/ 10 ноября 2018

Вы должны использовать что-то вроде этого:

re.search(r'\bsome\W+phrase\b', text)
  • '\ W' означает несловесный символ

  • '+' означает один или несколько раз

Если у вас есть заданная фраза в переменной, вы можете попробовать это раньше:

some_phrase = some_phrase.replace(r' ', r'\W+')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...