Java 如何修改我的正则表达式,使其不会';不匹配?

Java 如何修改我的正则表达式,使其不会';不匹配?,java,regex,Java,Regex,我写了这个正则表达式: String regex = "^\\s+something\\s+(not\\s+)?else\\s+([-,\\s\\d]+)$"; 该代码: String line = "something else 1, 2-3"; Matcher m = Pattern.compile(regex).matcher(line); m.matches()将返回true,这正是我想要的 但是,对于下面的代码,它也返回true,但我不希望它匹配。如何修改正则表达式,使其返回fal

我写了这个正则表达式:

String regex = "^\\s+something\\s+(not\\s+)?else\\s+([-,\\s\\d]+)$";
该代码:

String line = "something else 1, 2-3";
Matcher m = Pattern.compile(regex).matcher(line);
m.matches()
将返回
true
,这正是我想要的

但是,对于下面的代码,它也返回
true
,但我不希望它匹配。如何修改正则表达式,使其返回
false

String line = "something else 1 2 3";
Matcher m = Pattern.compile(regex).matcher(line);
谢谢


更新:我没有做任何范围检查。我只是想看看列表中的空格之间是否有逗号。所以
1,3,5-7
是有效的,但是
1,2,5-7
1,2,3
不是有效的。

你没有确切地说你想做什么,但是如果我猜的话,比如:

((\d+|\d+-\d+),\s+)*(\d+|\d+-\d+)$

替换最后一位将只允许逗号分隔的数字和数字列表

您没有确切说明您要做什么,但如果我猜的话,类似于:

((\d+|\d+-\d+),\s+)*(\d+|\d+-\d+)$

替换最后一位只允许逗号分隔的数字和数字列表

您是否担心6在5-7范围内或缺少逗号?正则表达式是检查字符是否在某个范围内但不在某个范围内的糟糕工具。考虑“1, 3, 7,5, 6”,我不做任何范围检查。如果列表中有空格,我只希望列表中有逗号。那么我相信我的答案解决了这个问题。你是担心6在5-7之间还是缺少逗号?正则表达式是检查字符是否在某个范围内但不在某个范围内的糟糕工具。考虑“1, 3, 7,5, 6”,我不做任何范围检查。如果列表中有空格,我只希望列表中有逗号。然后我相信我的答案解决了这个问题。