我正在尝试为 java 编写一个匹配以下字符串的正则表达式:
number,number,number(可以是这么简单,也可以有可变数量的数字,但每个数字后面必须有一个逗号,但不会有任何空格)
这是我的尝试:
[[0-9],[0-9]]+
但它似乎与其中有数字的任何东西相匹配
你可以尝试一些类似的东西([0-9]+,)*[0-9]+
这将匹配:
7
7,52
7,52,999
这将不匹配:
7, 52
7, 52,
我认为这会奏效
\d+,(\d+,)+
请注意,如您所愿,这只会捕获数字后跟逗号
我猜你是从一个字符串开始的。你为什么不直接使用String.split(",")
?
^ 表示字符串的开头,$ 表示结尾。如果你不使用这些,你可以在中间匹配一些东西(b
匹配的“abc”)。
它之前的元素上的+
作品。 b
是一个元素,[0-9]
是一个元素,组也是如此(括号中的东西)。
所以,你想要的正则表达式匹配:
^
[0-9]
(,[0-9])+
$
或者,^[0-9](,[0-9])+$
尝试将正则表达式作为[\d,]*
字符串表示,[\\d,]*
如下所示:
Pattern p4 = Pattern.compile("[\\d,]*");
Matcher m4 = p4.matcher("12,1212,1212ad,v");
System.out.println(m4.find()); //prints true
System.out.println(m4.group());//prints 12,1212,1212
如果您想匹配至少一个逗号 (,) 和两个数字,例如12,1212
,那么您可能希望使用正则表达式 as(\d+,)+\d+
和字符串表示 as \\d+,)+\\d+
。此正则表达式匹配一个区域,其数字最少为一位数字,后跟一个逗号 (,),后跟最少一位数字。