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