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!
}