此问题已在此处有答案:
Regex whitespace word boundary(3个答案)
Regular expression: matching words between white space(1个答案)
12天前关闭
使用Python 3.9.13.
如何用一个简单的正则表达式匹配一个没有前导或尾随字符的精确单词?
有使用边界词\b
的答案。然而,根据Python文档,它可以匹配非单词字符。\b
:匹配空字符串,但仅在单词的开头或结尾。单词被定义为单词字符的序列。请注意,形式上,\b
定义为\w
和\W
字符之间的边界(反之亦然),或者\w
和字符串的开头/结尾之间的边界。
例如,我只想得到与单词cool
匹配的结果,而不想得到与#cool
或cool.
匹配的结果。
re.findall(
pattern=r'\bcool\b',
string=" #cool",
flags=re.IGNORECASE|re.ASCII
)
---
['cool']
备选方案可以列出多个模式,但它不干净。
re.findall(
pattern=r'\Acool\Z|\s+cool\s+|^cool\s+|\s+cool\Z',
string=" #cool",
flags=re.IGNORECASE|re.ASCII
)
---
请建议是否有更好和简单的一个regexp模式来实现这一点。
更新
re.findall(
pattern=r'(?<!\S)cool(?!\S)',
string=" #cool cool& cool cool\n (cool)",
flags=re.IGNORECASE|re.ASCII
)
---
['cool', 'cool']
或
re.findall(
pattern=r'(?<=\s|^)cool(?=\s|$)',
string=" #cool cool& cool cool\n (cool)",
flags=re.IGNORECASE|re.ASCII
)
---
['cool', 'cool']
1条答案
按热度按时间pepwfjgg1#
像这样使用match函数和其他正则表达式模式
然后,如果你想在一个if语句中这样做:
或基于您的问题: