Java正则表达式验证由括号中逗号分隔的重复数字序列组成的字符串

Java正则表达式验证由括号中逗号分隔的重复数字序列组成的字符串,java,regex,Java,Regex,我有一个包含如下重复模式的输入: (3,5)(6,7)(8,9)..... 我正在使用正则表达式来验证上述字符串模式 我试过: Pattern.compile("\\((\\d+),(\\d+)\\)") 如果您有一个特定的模式可能在字符串中重复一次或多次,并且您希望确保您的字符串仅由相同模式的重复出现组成,则可以使用 ^(?:YOUR_PATTERN)+$ \A(?:YOUR_PATTERN)+\z 请注意,$在最后一个换行符之前,这就是为什么当您需要匹配字符串的最末端时,首选\z锚定

我有一个包含如下重复模式的输入:

 (3,5)(6,7)(8,9).....
我正在使用正则表达式来验证上述字符串模式

我试过:

Pattern.compile("\\((\\d+),(\\d+)\\)")

如果您有一个特定的模式可能在字符串中重复一次或多次,并且您希望确保您的字符串仅由相同模式的重复出现组成,则可以使用

^(?:YOUR_PATTERN)+$
\A(?:YOUR_PATTERN)+\z
请注意,
$
在最后一个换行符之前,这就是为什么当您需要匹配字符串的最末端时,首选
\z
锚定

如果允许空字符串,请使用
*
量词而不是
+

^(?:YOUR_PATTERN)*$
\A(?:YOUR_PATTERN)*\z
在这种情况下,
您的\u模式
\(\d+,\d+\)
,因此,重复序列验证模式将是
\A(?:\(\d+,\d+\)++\z

在Java中,在使用
.matches()
方法验证字符串时,可以省略
^
/
$
\A
/
\z
锚定,因为它需要完整的字符串匹配:

boolean isValid = text.matches("(?:\\(\\d+,\\d+\\))+");
或者,首先删除
模式
类实例,然后创建一个匹配器,将字符串作为输入并运行


然后呢?正则表达式似乎或多或少还行。问题是什么?使用
模式。编译((?:\\(\\d+,\\d+\)+)”
@WiktorStribiżew您需要添加
^
$
,或者您需要澄清它必须与
匹配()
,而不是
查找()
一起使用。谢谢它的工作,是的,我想匹配而不是查找()
Pattern p = Pattern.compile("(?:\\(\\d+,\\d+\\))+");
Matcher m = p.matcher(text);
if (m.matches()) {
    // The text is valid!
}