JAVA REGEX::你能解释一下吗?

标签 java regex word-boundary

我的模式是[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/

相关文章:

Bash 中带有字符、点和数字的正则表达式

javascript - 与字边界相比,正则表达式 (\B) 中的非字边界是什么?

regex - 如何使用自定义词边界创建将获取 N 个词的 RegEx 模式?

java - 运行Spark作业时选择JVM

java - 正则表达式双新行

java - 删除包含特定字符的行

java - 如何使用正则表达式在 LaTeX 中查找嵌套标签

MySQL 8 + 正则表达式字边界

java - 在 Java 中从 String 常量映射到 int 常量的更好方法

java - 如何在JDBC 中执行不带参数的存储过程?