python 3 正则表达式字符串匹配忽略空格和 string.punctuation

python 3 regex string matching ignore whitespace and string.punctuation

我是正则表达式的新手,想知道如何对两个字符串进行模式匹配。用例类似于在某些文本中找到某个短语。如果有区别,我正在使用 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)

如果您提供有效的解决方案,我将非常感谢解释正则表达式为何有效。

你应该使用这样的东西:

re.search(r'\bsome\W+phrase\b', text)
  • '\W'表示非单词字符

  • '+'表示一次或多次

如果你在变量中有一个给定的短语,你可以先试试这个:

some_phrase = some_phrase.replace(r' ', r'\W+')