\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