gpt4 book ai didi

Java正则表达式匹配用冒号分隔的多个数字序列

转载 作者:行者123 更新时间:2023-11-29 03:08:02 25 4
gpt4 key购买 nike

我有一个必须具有给定格式的字符串:

  • 至少 ddd:dd
  • ddd:dd,ddd:dd
  • ddd:dd,ddd:dd,ddd:dd

看到 JavaDoc ,我使用这种模式:

"^[\\d{3}:\\d{2}]+[,\\d{3}:\\d{2}]*$"

代码:

myString.matches("^[\\d{3}:\\d{2}]+[,\\d{3}:\\d{2}]{0,2}$")

它不起作用,但我看不出错误。

最佳答案

关于您的正则表达式需要注意的一件事是它在字符类 ([...] 中存在一个严重问题,我们在其中定义我们想要匹配或不想匹配的字符或符号范围匹配)而不是组((...),我们只使用需要匹配的字符序列,或使用交替)。 Here you can see what your regex actually matches :

enter image description here

我确定 {3}: 列表中的单个字符 {3}: literally 确实是您不想要的。

如果 d 代表任何数字,你需要使用类似的东西

String pattern = "\\d{3}:\\d{2}(?:,\\d{3}:\\d{2})*";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher("111:11,222:22,222:22");

while (m.find()) {
System.out.println(m.group());
}

参见 IDEONE demo

这里是 an example with matches :

String pattern = "\\d{3}:\\d{2}(?:,\\d{3}:\\d{2})*";
System.out.println("222:22,222:22".matches(pattern));
System.out.println("111:11,222:22,222:22".matches(pattern));

关于Java正则表达式匹配用冒号分隔的多个数字序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31058367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com