正则表达式模式中的混乱


private static Pattern inputPattern = Pattern.compile("(.*) (\d*)"); 

我是编码的初学者。我试图从网上理解和学习。在上面的行pattern.compile(),我无法理解。我阅读了有关正则表达式模式的文档,但仍然无法将括号中的内容联系起来。

有人可以向我解释一下吗?

以下是此正则表达式的部分:

(.*) = 由零个或多个实例组成的组() *任何字符.

= 一个空格

() = 由零个或多个实例组成的组* \d任何数字d

所以这个正则表达式匹配"abcde 34454"和"44"和"445",而不是"abcde44"。请注意,\d 是一个数字,但反斜杠需要转义,因此Pattern

Java 的 Matcher. 类的文档应该会有所帮助:http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.htmlhttp://docs.oracle.com/javase/8/docs/api/java/util/regex/Matcher.html

此外,我建议阅读正则表达式语法。

要回答您的问题:

*是正则表达式元素,它表示除换行符之外的任何字符

d 是一个元素的标志,表示"前一个元素的零个或多个"。

.*是正则表达式元素,它表示任何单个整数 0-9。

捕获用括号表示。此表达式有两个捕获,一个用于d*,另一个用于s

捕获之间有一个空格,它将与单个文本空间匹配。 我建议改用.*sd*

一些匹配的字符串:

"zxcvb 12345"
"zxcvb "
" 12345"

除非您打算从第一次和/或第二次捕获中检索信息,否则我会将表达式更改为更合适的表达式。

示例:CC_21

最新更新