2013-03-24 114 views
1

我有此表达正则表达式字边界( B)匹配和空白

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

如果我给 “ABC @德MNOP” 时,它匹配 “ABC”, “日” 和 “MNOP”。但我希望它只匹配“mnop”。我怎样才能做到这一点。

+2

您可以更具体地说明您想要匹配的内容,也许可以使用空格和标点符号作为分隔符而不是单词边界。 – 2013-03-24 17:23:27

+1

你需要指定的语言/工具..正则表达式实施不同语言 – Anirudha 2013-03-24 17:34:58

回答

7

\b是一个字边界。

所以,\b类似于[^a-zA-Z0-9_]\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(^) 
+0

+1的环顾。 – 2013-03-24 17:25:22

5

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

你可以写:

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

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