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