\w对我来说,这似乎有点奇怪[a-zA-Z0-9_]。我想知道为什么0-9和_被计算在单词字符之间,为什么-不被计算在单词字符之间。
如果我想拆分句子:
This is counter-example.
(\w*\b)它将把反例这个词分成两部分。同样(count.*?\b)只匹配counter。
是否有可能与包含在单词字符 ( ) 中\b的结果类似?-\w
还是我误解了 的用法\b?有一些标准用法的例子吗?
\w对我来说,这似乎有点奇怪[a-zA-Z0-9_]。我想知道为什么0-9和_被计算在单词字符之间,为什么-不被计算在单词字符之间。
如果我想拆分句子:
This is counter-example.
(\w*\b)它将把反例这个词分成两部分。同样(count.*?\b)只匹配counter。
是否有可能与包含在单词字符 ( ) 中\b的结果类似?-\w
还是我误解了 的用法\b?有一些标准用法的例子吗?
匹配下划线以及大写和小写字母的事实\w是历史性的:这是因为它最初是为了匹配 C 标识符而引入的。
嗯,这对于 Java 来说是正确的\w(是的,\w不会匹配 Java 中的重音字符)。
\b然而是一个锚,它不是由单词字符和非单词字符之间的边界来定义的,实际上它是依赖于实现的。
没有真正的锚可以做你想做的,但如果你想匹配单词和破折号,你最好的选择是\w*(-\w*)*.
再次,normal* (special normal*)*模式!
(顺便说一句,\b仅在某些方言中是“单词锚”,其他实现分别定义\<并\>代替单词锚的开头和结尾)
[编辑严重错误]
用这个:[\w-]*
例如,您想匹配以 e 结尾并以 co 开头的内容
细绳:
This is counter-example.
正则表达式:
co[\w-]*e
匹配:
counter-example