Java regex验证一个由逗号分隔的数字重复序列组成的字符串,并用括号括起来。

我有一个输入,包含这样的重复模式。

 (3,5)(6,7)(8,9).....

我正在研究一个验证上述字符串模式的regex。

我试了一下。

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中,你可以省略 ^$\A\z 当使用 .matches() 方法,因为它需要一个完整的字符串匹配。

boolean isValid = text.matches("(?:\\(\\d+,\\d+\\))+");

或者,去掉 Pattern 类实例,然后创建一个以字符串为输入的匹配器,并运行 Matcher#matches()

Pattern p = Pattern.compile("(?:\\(\\d+,\\d+\\))+");
Matcher m = p.matcher(text);
if (m.matches()) {
    // The text is valid!
}

给TA打赏
共{{data.count}}人
人已打赏
未分类

如何垂直排列柱状图,使每个柱状图在不同的x数下获得相同的宽度。

2022-9-8 19:15:36

未分类

'glPopMatrix': 找不到标识符。

2022-9-8 19:15:38

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索