RL2.2在UTS #18中描述了Unicode正则表达式中扩展字形簇单词边界语法\b{w},但我不太理解它与\b语法的区别。在UTS #18中,它说: \b{w}. Unicode单词边界。请注意,这与\b本身不同,后者对应于\w和\W。请参阅附录C:兼容性属性。 那么这两种语法之间的区别到底是什么?
\b == \w\W \W = [^A-Za-z0-9_]表示只处理ASCII字母数字,而\b{w}则处理UNICODE字符集(即更广泛的字母数字集)。 您可以在此处模拟\b{w}的示例,并将其与通常行为进行比较。
\b{w}
会处理Unicode,因此它将匹配ä
? - Xiangyu.Wup
是一个单词字符,但ä
不是,所以\b
在它们之间匹配。两者都是 Unicode 单词字符,因此它们之间没有 Unicode 单词边界,所以\b{w}
无法匹配。 - Amadan\b
或\b{w}
是否会包含在匹配结果中?在pä
的例子中,似乎\b
会匹配p
,因为在p
后面语言发生了变化,所以p
实际上是一个单词边界? - Xiangyu.Wu\b
的行为类似于环视,它是一个零宽度断言。 - Thomas Ayoub\b{w}
将匹配单词字符后面的三个字符{w}
。 - Amadan