1

\w对我来说,这似乎有点奇怪[a-zA-Z0-9_]。我想知道为什么0-9_被计算在单词字符之间,为什么-不被计算在单词字符之间。

如果我想拆分句子:

This is counter-example.

(\w*\b)它将把反例这个词分成两部分。同样(count.*?\b)只匹配counter

是否有可能与包含在单词字符 ( ) 中\b的结果类似?-\w

还是我误解了 的用法\b?有一些标准用法的例子吗?

4

2 回答 2

2

匹配下划线以及大写和小写字母的事实\w是历史性的:这是因为它最初是为了匹配 C 标识符而引入的。

嗯,这对于 Java 来说是正确的\w(是的,\w不会匹配 Java 中的重音字符)。

\b然而是一个锚,它不是由单词字符和非单词字符之间的边界来定义的,实际上它是依赖于实现的。

没有真正的锚可以做你想做的,但如果你想匹配单词和破折号,你最好的选择是\w*(-\w*)*.

再次,normal* (special normal*)*模式!

(顺便说一句,\b仅在某些方言中是“单词锚”,其他实现分别定义\<\>代替单词锚的开头和结尾)

[编辑严重错误]

于 2011-12-16T19:30:41.787 回答
1

用这个:[\w-]*

例如,您想匹配以 e 结尾并以 co 开头的内容

细绳:

This is counter-example.

正则表达式:

co[\w-]*e

匹配:

counter-example
于 2011-12-16T19:28:52.550 回答