我的模式是[a-z][\\*\\+\\-_\\.\\,\\|\\s]?\\b
我的结果:
a__
not matched
a_.
pattern matched = a_
a._
pattern matched = a.
a..
pattern matched = a
为什么我的第一个输入单独不匹配??? 提前致谢。
[ PS: 与 [a-z][\\*\\+\\-\\_\\.\\,\\|\\s]?\\b 得到相同的结果 ]
最佳答案
因为与句点.
不同,下划线_
被认为是单词字符;所以 a_
是一个单词,而 a.
是一个带有间标的单词。
因此,a__
匹配 a
,然后匹配 _
,然后无法匹配单词边界(因为下一个 _
是同一个单词的一部分)。
a..
匹配 a
,跳过字符范围,然后匹配单词 a
和间标点 之间的单词边界.
.
关于JAVA REGEX::你能解释一下吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26988688/