此问题已在此处有答案:
Word boundary with words starting or ending with special characters gives unexpected results(2个答案)
Regex whitespace word boundary(3个答案)
2天前关闭。
我知道现有的多个答案表明:
def contains(string, word):
return bool(re.search(rf"\b{word}\b", string))
但这种模式对字母数字字符进行了特殊处理。例如,contains("hello world!", "world!")
返回False
,而contains("hello world!", "world")
返回True
。
我需要一个更“简单”的搜索模式,只要它以超字符串的边界或空格开始和结束,就可以匹配子字符串。(期望行为:与上面的例子相反)。
1条答案
按热度按时间qmelpv7a1#
您需要避免使用
\b
(字边界),并Assert上一个和下一个位置没有非空格字符。此外,使用re.escape
更安全,因为您的搜索词可能包含特殊的正则表达式 meta字符。你可以使用这个Python代码:
输出:
在线代码演示