Regex 正则表达式模式中的混淆
我是一个编码初学者。我正在努力理解和学习网络。在上面的Regex 正则表达式模式中的混淆,regex,hadoop,mapreduce,Regex,Hadoop,Mapreduce,我是一个编码初学者。我正在努力理解和学习网络。在上面的pattern.compile()行中,我无法理解。我阅读了关于reg-ex模式的文档,但仍然无法将其与括号中的内容联系起来 有人能给我解释一下吗?以下是这个regexp的部分: (.*)=由零个或多个任何字符的实例组成的组() =一个空格 (\\d*)=由任何数字的零个或多个实例组成的组() 所以这个regexp匹配“abcde34454”和“44”以及“445”,但不匹配“abcde44”。 请注意,\d是一个数字,但反斜杠需要转义,因此
pattern.compile()
行中,我无法理解。我阅读了关于reg-ex模式的文档,但仍然无法将其与括号中的内容联系起来
有人能给我解释一下吗?以下是这个regexp的部分:
(.*)
=由零个或多个任何字符的实例组成的组()
=一个空格
(\\d*)
=由任何数字的零个或多个实例组成的组()
所以这个regexp匹配“abcde34454”和“44”以及“445”,但不匹配“abcde44”。
请注意,
\d
是一个数字,但反斜杠需要转义,因此Java的\\d
模式和匹配器类的文档应该有助于:
此外,我建议阅读正则表达式语法
回答你的问题:
是一个正则表达式元素,它表示除换行符以外的任何字符
*
是元素的标志,表示“前一个元素的零个或多个”
\d
是一个正则表达式元素,它表示任何单个整数0-9
捕获由括号表示。
此表达式有两个捕获,一个用于*
,另一个用于\d*
捕获之间有一个空格,它将匹配单个文本空格。我建议改用\s
一些匹配字符串:
private static Pattern inputPattern = Pattern.compile("(.*) (\\d*)");
除非您计划从第一次和/或第二次捕获中检索信息,否则我会将表达式更改为更合适的表达式
示例:*\s\d*
在这样的网站上测试它们会非常有帮助,尽管这样的网站不需要转义字符,所以将\`d
更改为\d
。我发现在这个主题上比大多数文档更清晰。感谢大家。
"zxcvb 12345"
"zxcvb "
" 12345"