正则表达式如何使用java查找中间有空格的数字的正则表达式模式
这是我想要匹配的正则表达式
5 9 5 4 1 9 9 2 2 1 4 7 3 there is a single space in between every number and a double number in between the for digit and the five digit number .
这就是我试图解决它的方法
([0-9\\s]|[0-9]){4}[\\s]([0-9\\s]|[0-9]){5}[\\s]([0-9\\s]|[0-9]){4}
谁能告诉我我错过了什么
# 1 楼答案
建议正则表达式
正则表达式
如果能做到这一点,它会找到尽可能多的由任意数量的空格分隔的单位数
分解你的正则表达式来解释
看看这个世界的不同部分
首先:
([0-9\\s]|[0-9]){4}
相当于[0-9\\s]{4}
,即:0和9之间的任何数字或一个空格正好4次。这将匹配字符串的前4个字符(2个数字和2个空格)其次:
[\\s]
直接等同于\\s
,因为“s”中的任何字符都等于“\s”正则表达式的其余部分遵循相同的结构
建议的修复方法
因此,我建议清理正则表达式:
虽然我想你想写的是:
哪个匹配(按顺序):
但我认为你最好使用上面的正则表达式,因为它更灵活地查找由任意数量的空格分隔的数字组合
结论
我认为你的错误是把
[]
和()
混淆了[]
将匹配其中的任何字符,()
将按照指定的顺序匹配所有字符此外,量词
?
表示1或0,使用起来比or
运算符更快/更清晰