private static Pattern inputPattern = Pattern.compile("(.*) (\\d*)");
我是编码的初学者。我正在努力理解并从网上学习。在上面的pattern.compile()
行中,我无法理解。我阅读了关于注册模式的文档,但仍然无法将这些内容与括号中的内容联系起来。
有人可以向我解释一下吗?
答案 0 :(得分:1)
以下是此正则表达式的各个部分:
(.*)
=由{em>任意角色 ()
*
组成的群组.
=空格
(\\d*)
=由任意数字()
的零个或多个实例*
组成的群组\\d
所以这个正则表达式匹配" abcde 34454"和" 44"和" 445"但不是" abcde44"。
请注意\d
是一个数字,但反斜杠需要转义,因此\\d
答案 1 :(得分:1)
Java Pattern
和Matcher
类的文档应该有所帮助:
http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html
http://docs.oracle.com/javase/8/docs/api/java/util/regex/Matcher.html
此外,我建议阅读有关正则表达式语法的内容。
回答你的问题:
.
是一个正则表达式元素,它表示除换行符之外的任何字符
*
是元素的标志,表示"前面元素中的零个或多个"。
\d
是一个正则表达式元素,它表示任何单个整数0-9。
捕获由括号表示。
此表达式有两个捕获,一个用于.*
,另一个用于\d*
。
捕获之间有一个空格,可以匹配单个文字空间。我建议改用\s
。
一些匹配的字符串:
"zxcvb 12345"
"zxcvb "
" 12345"
除非您计划从第一次和/或第二次捕获中检索信息,否则我会将表达式更改为更合适的内容。
示例:.*\s\d*