0

我现在正在尝试进行全字匹配,并且 \b 标志正在匹配不是单词边界的东西。我的正则表达式目前看起来像这样:

m = re.compile(r'\bT5\b')

这适用于大多数出现的“T5”,但 \b 将匹配诸如 $、# 或 ! 之类的符号。因此,像 '#T5' 或 '!T5' 这样的字符串将匹配上面的正则表达式。这些符号与我系统上的 \w 标志不匹配。我想匹配的是“T5”或“T5”或“T5”中的“T5”——基本上是围绕它的空白字符串,或者围绕它的空字符串。我在这里做错了吗?我没有发现任何提到\b 和\w 之间的差异。如何调整我的正则表达式,使其与上述符号不匹配?

4

1 回答 1

2

表示单词字符(字母数字和)与非单词字符之间的\b边界。_在这种情况下,您希望有一个零宽度的负后瞻和前瞻;使用“非空白字符”原子\S

尝试:

m = re.compile(r'(?<!\S)T5(?!\S)')

这里(?<!\S)的意思是“如果前面没有非空白字符”,(?!\S)意思是“如果后面没有非空白字符”。

于 2013-10-18T15:23:56.943 回答