Python 努力创建正确的正则表达式 我试图为每个“单词”(小写或大写)找到匹配项: (word | word) 前面或后面没有字符或数字: (?(word)(?![^a-zA-Z0-9]) 如果“word”位于字符串的开头或结尾: ^ |(?|$

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)\

它根本不起作用,有什么建议吗? 因此,切换到(?)

也就是说,@user3783243对\b的评论是一个更好的选择。\b是一个“单词边界”,它正好代表您试图捕获的内容。Python确实支持它:。相关:

所以你实际上应该只使用\b(word | word)\b

(?)? 因此,切换到(?)

也就是说,@user3783243对\b的评论是一个更好的选择。\b是一个“单词边界”,它正好代表您试图捕获的内容。Python确实支持它:。相关:


所以你实际上应该只使用你想要的\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中的单词没有意义!