Python 努力创建正确的正则表达式 我试图为每个“单词”(小写或大写)找到匹配项: (word | word) 前面或后面没有字符或数字: (?(word)(?![^a-zA-Z0-9]) 如果“word”位于字符串的开头或结尾: ^ |(?|$
它根本不起作用,有什么建议吗? 因此,切换到(?) 也就是说,@user3783243对\b的评论是一个更好的选择。\b是一个“单词边界”,它正好代表您试图捕获的内容。Python确实支持它:。相关: 所以你实际上应该只使用\b(word | word)\b(?)? 因此,切换到(?) 也就是说,@user3783243对\b的评论是一个更好的选择。\b是一个“单词边界”,它正好代表您试图捕获的内容。Python确实支持它:。相关:Python 努力创建正确的正则表达式 我试图为每个“单词”(小写或大写)找到匹配项: (word | word) 前面或后面没有字符或数字: (?(word)(?![^a-zA-Z0-9]) 如果“word”位于字符串的开头或结尾: ^ |(?|$,python,regex,Python,Regex,它根本不起作用,有什么建议吗? 因此,切换到(?) 也就是说,@user3783243对\b的评论是一个更好的选择。\b是一个“单词边界”,它正好代表您试图捕获的内容。Python确实支持它:。相关: 所以你实际上应该只使用\b(word | word)\b(?)? 因此,切换到(?) 也就是说,@user3783243对\b的评论是一个更好的选择。\b是一个“单词边界”,它正好代表您试图捕获的内容。Python确实支持它:。相关: 所以你实际上应该只使用你想要的\b(word | word)\
所以你实际上应该只使用你想要的\b(word | word)\b
import re
text = "123 Lorem ipsum dolor sit amet, word WORD WoRd consetetur sadipscing elitr, sed diam 123"
pattern = re.compile(r'\bword\b', re.IGNORECASE)
for word in pattern.finditer(text):
print(word.group(0))
这将产生
word
WORD
WoRd
\b
是
(?:(?=\w)(?<!\w)|(?<=\w)(?!\w))
(?:(?=\w)(?)?
上面写着
(?=\w)(?<!\w) # positive lookahead making sure there's a word character coming
# negative lookbehind making sure theres' n word characte preceding
| # or
(?<=\w)(?!\w) # the other way round
(?=\w)(?)?
所以,是的
(?:(?=\w)(?<!\w)|(?<=\w)(?!\w))word(?:(?=\w)(?<!\w)|(?<=\w)(?!\w))
(?:(?=\w)(?)?
将产生与上面相同的匹配,但似乎有点不可读。您可能正在寻找
import re
text = "123 Lorem ipsum dolor sit amet, word WORD WoRd consetetur sadipscing elitr, sed diam 123"
pattern = re.compile(r'\bword\b', re.IGNORECASE)
for word in pattern.finditer(text):
print(word.group(0))
这将产生
word
WORD
WoRd
\b
是
(?:(?=\w)(?<!\w)|(?<=\w)(?!\w))
(?:(?=\w)(?)?
上面写着
(?=\w)(?<!\w) # positive lookahead making sure there's a word character coming
# negative lookbehind making sure theres' n word characte preceding
| # or
(?<=\w)(?!\w) # the other way round
(?=\w)(?)?
所以,是的
(?:(?=\w)(?<!\w)|(?<=\w)(?!\w))word(?:(?=\w)(?<!\w)|(?<=\w)(?!\w))
(?:(?=\w)(?)?
将产生与上面相同的匹配,但看起来有点不可读。可能(?i)\bword\b
?不确定python是否支持。(..或者只能支持所有大写或小写?)python支持不区分大小写的标志,但在case-OP需要固定大小写的\b(word | word)\b
使用re.findall
应该可以做到这一点。word
只是一个副词,对吧?regex中确实没有单词边界这样的东西,因为regex构造中没有指定语言。你要找的是你自己定义的边界。假设你有一个字母W
,你没有不要让字母或数字围绕它(?预设为您自己的边界定义。让我们假设您想要一个Q
围绕它,或者字符串的结束/开始。(?又是一个新的边界定义。regex中的单词的想法是没有意义的!可能(?i)\bword\b
?不确定python是否支持这一点。(…或者只能支持所有大写或所有小写?)Python支持不区分大小写的标志,但如果OP需要固定大小写\b(word | word)\b
使用re.findall
应该可以做到这一点。word
只是一个副词,对吧?regex中确实没有单词边界这样的东西,因为regex构造中没有指定语言。你要找的是你自己定义的边界。假设你有一个字母W
,你没有不要让字母或数字围绕它(?预设为您自己的边界定义。假设您希望Q
围绕它,或字符串的结尾/开头。(?再加上一个新的边界定义。regex中的单词没有意义!