我有这个表达式
\b[A-Za-z]+\b
如果我提供的是abc@de mnop
,它会匹配 abc
、de
和 mnop
,但我只想匹配 mnop
。我该怎么做?
我有这个表达式
\b[A-Za-z]+\b
如果我提供的是abc@de mnop
,它会匹配 abc
、de
和 mnop
,但我只想匹配 mnop
。我该怎么做?
\b
是单词边界。
因此,\b
类似于 [^a-zA-Z0-9_]
,即 \b
将检查任何除了单词以外的内容。
您可以使用以下正则表达式代替:
(?<=\s|^)[a-zA-Z]+(?=\s|$)
-------- --------- ------
| | |->match only if the pattern is followed by a space(\s) or end of string/line($)
| |->pattern
|->match only if the pattern is preceded by space(\s) or start of string\line(^)
(?<=\s|^)
。在这种情况下,您必须将^
与回溯后面的部分分开处理:(?:^|(?<=\s))
或使用Qtax提供的更简单的解决方案:(?<!\S)
。 - pabouk - Ukraine stay strong\b
的意思是 (?:(?<!\w)(?=\w)|(?<=\w)(?!\w))
。它可以匹配字母和 @
之间的位置。
你可以这样写:
(?<!\S)[A-Za-z]+(?!\S)
(?!\S)
相当于 (?=\s|$)
。
正则表达式单词边界(\b)无法匹配和空格匹配
示例中仅包含空格
abc@de mnop
^
\s([A-Za-z]+)\b
,其中\s
是锚点,而不是边界。