![](/img/trans.png)
[英]java regex match string containing words with no digits and optionally separated by comma
[英]Java regex validate a string consisting of repeated sequences of comma separated digits enclosed in parentheses
我有一个包含重复模式的输入,如下所示:
(3,5)(6,7)(8,9).....
我正在研究一个正则表达式来验证上述字符串模式。
我试过了:
Pattern.compile("\\((\\d+),(\\d+)\\)")
如果你有一个特定的模式可能在一个字符串中重复一次或多次,并且你想确保你的字符串只包含相同模式的重复出现,你可以使用
^(?:YOUR_PATTERN)+$
\A(?:YOUR_PATTERN)+\z
请注意, $
也在最后一个换行符之前匹配,这就是为什么当您需要匹配字符串的最末尾时首选\z
锚点的原因。
如果您允许空字符串,请使用*
量词而不是+
:
^(?:YOUR_PATTERN)*$
\A(?:YOUR_PATTERN)*\z
在这种情况下, YOUR_PATTERN
是\(\d+,\d+\)
,因此,重复序列验证模式将是\A(?:\(\d+,\d+\))+\z
。
在 Java 中,您可以在使用.matches()
方法验证字符串时省略^
/ $
和\A
/ \z
锚点,因为它需要完整的字符串匹配:
boolean isValid = text.matches("(?:\\(\\d+,\\d+\\))+");
或者,首先标记Pattern
class 实例,然后使用字符串作为输入创建匹配器并运行Matcher#matches()
Pattern p = Pattern.compile("(?:\\(\\d+,\\d+\\))+");
Matcher m = p.matcher(text);
if (m.matches()) {
// The text is valid!
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.