[英]Difference between \w and \b regular expression meta characters
任何人都可以解释\\w
和\\b
正则表达式元字符之间的区别吗?
据我所知,这两个元字符都用于字边界。 除此之外,哪个元字符对多语言内容有效?
元字符\\b
是像插入符号和美元符号的锚。 它匹配一个称为“单词边界”的位置 。 这个匹配是零长度。
有三种不同的职位符合词边界:
简单地说: \\b
允许您使用\\bword\\b
形式的正则表达式执行“仅限整个单词”搜索。 “单词字符”是可用于形成单词的字符。 所有不是“单词字符”的字符都是“非单词字符” 。
在所有风格中,字符[a-zA-Z0-9_]
是单词字符。 这些也与短手字符类\\w
匹配。 在风味比较中显示单词边界的“ascii”的风味仅将这些作为单词字符识别。
\\w
代表“单词字符” ,通常是[A-Za-z0-9_]
。 请注意包含下划线和数字。
\\B
是\\b
的否定版本。 \\B
匹配\\b
不匹配的每个位置。 实际上, \\B
匹配两个单词字符之间的任何位置以及两个非单词字符之间的任何位置。
\\W
是短期的[^\\w]
否定版本的\\w
。
\\w
匹配单词字符。 \\b
是一个零宽度匹配,匹配一侧有单词字符的位置字符,另一侧不是单词字符。 (不是单词字符的例子包括空格,字符串的开头和结尾等)
\\w
匹配"abc def"
中的a
, b
, c
, d
, e
和f
\\b
前(零宽度)的位置相匹配a
,后c
,之前d
,和后f
在"abc def"
@Mahender,你可能意味着\\W
(而不是\\w
)和\\b
之间的区别。 如果没有,那么我同意上面的@BoltClock和@jwismar。 否则继续阅读。
\\W
将匹配任何非单词字符,因此很容易尝试使用它来匹配单词边界。 问题是它不匹配一行的开头或结尾。 \\b
更适合匹配字边界,因为它也匹配字符串的开头或结尾。 粗略地说(更有经验的用户可以在这里纠正我) \\b
可以被认为是(\\W|^|$)
。 [编辑:正如@Ωmega在下面提到的, \\b
是一个零长度匹配,所以(\\W|^|$)
不是严格正确的,但希望有助于解释差异]
快速示例:对于字符串Hello World
, .+\\W
将匹配Hello_
(与空间)但不匹配World
。 .+\\b
匹配Hello
和World
。
\b <= this is a word boundary.
匹配在一个位置后跟一个单词字符但不以单词字符开头,或者以单词字符开头但后面没有单词字符的匹配。
\w <= stands for "word character".
它始终匹配ASCII字符[A-Za-z0-9_]
你有什么具体的想法吗?
一些有用的正则表达式网站适合初学者或只是为了满足你的胃口。
我发现这是一本非常有用的书:
\\w
不是单词边界,它匹配任何单词字符,包括下划线: [a-zA-Z0-9_]
。 \\b
是单词边界,也就是说,它匹配单词和非字母数字字符之间的位置: \\W
或[^\\w]
。
然而,这些实现可能因语言而异。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.