gpt4 book ai didi

java - 无法调整此模式的正则表达式

转载 作者:行者123 更新时间:2023-12-02 05:00:31 25 4
gpt4 key购买 nike

我的模式如下:

[number between 0-23]([delimiter][number between 0-23])+

分隔符可以是://*

看看圆括号里的内容可以重复多次。

例如:

8/12
3/*13
9/10/12
9/*10/11

这是我的代码:

public class Regext_PlayerMove {

public static void main(String[] args) {
System.out.println(parse("12/14"));
System.out.println(parse("14/4"));
System.out.println(parse("5/*7"));
System.out.println(parse("0/*7"));
System.out.println(parse("0/*7/9"));
System.out.println(parse("0/*7/*11"));

// Illegal data
System.out.println(parse("5/*77"));
System.out.println(parse("2/4/"));
System.out.println(parse("/1/*16/"));
System.out.println(parse("35/7"));

}

private static String parse(String path) {
Pattern p = Pattern.compile("^(1[0-9]|2[0-3]|[0-9])(\\/\\*|\\/)(1[0-9]|2[0-3]|[0-9])$");
Matcher m = p.matcher(path);

if (m.find()) {
return m.group(1) + m.group(2) + m.group(3);
}

return null;
}

}

只要我只有一次重复(例如:12/14),它就可以正常工作

有人可以帮助我了解如何扩展我的解决方案以捕获多个重复吗?

最佳答案

使用+重复前一个标记一次或多次。

Pattern p = Pattern.compile("^(1[0-9]|2[0-3]|[0-9])(?:(/\\*?)(1[0-9]|2[0-3]|[0-9]))+$");

DEMO

很难将它们分别捕获到单独的组中,但您可以使用 matches 方法来检查 true 或 false。

关于java - 无法调整此模式的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28328534/

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