5

我有这个表情

\b[A-Za-z]+\b

如果我给abc@de mnop,它匹配abc, deand mnop,但我希望它只匹配mnop。我怎样才能做到这一点?

4

3 回答 3

14

\b是单词边界。

所以,\b类似于[^a-zA-Z0-9_]ie\b检查除了word

您可以改用此正则表达式

(?<=\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(^)
于 2013-03-24T17:24:22.330 回答
7

\b意味着(?:(?<!\w)(?=\w)|(?<=\w)(?!\w))。这将匹配字母和之间的位置@

你可以写:

(?<!\S)[A-Za-z]+(?!\S)

(?!\S)相当于(?=\s|$)

于 2013-03-24T17:26:27.780 回答
0

Regex word boundary doen't match(\b) matching and whitespace

样品中只有白色是

abc@de mnop   
      ^

尝试\s([A-Za-z]+)\b

\s锚点在哪里,根本不是边界

于 2020-05-09T19:31:33.367 回答