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

时间:2018-11-10 14:17:37

标签: regex string python-3.x pattern-matching non-alphanumeric

我是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 :(得分:1)

您应该使用类似这样的内容:

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

  • '+'表示一次或多次

如果变量中有给定的短语,则可以尝试以下操作:

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