我正在尝试为 java 编写一个匹配以下字符串的正则表达式:
number,number,number(可以是这么简单,也可以有可变数量的数字,但每个数字后面必须有一个逗号,但不会有任何空格)
这是我的尝试:
[[0-9],[0-9]]+
但它似乎与其中有数字的任何东西相匹配
你可以尝试一些类似的东西([0-9]+,)*[0-9]+
这将匹配:
77,527,52,999这将不匹配:
7, 527, 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+。此正则表达式匹配一个区域,其数字最少为一位数字,后跟一个逗号 (,),后跟最少一位数字。