gpt4 book ai didi

嵌入式参数的 Java 表达式

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

我正在为我的模式定义 java 表达式,但它不起作用。

这是我要为其定义模式的文本:

"sometext {10} some text {25} sometext".

命名参数是{10}, {25}, ....

我使用了这样的模式:“({\d+})*”但它不起作用并且我收到异常:

Caused by: java.util.regex.PatternSyntaxException: Illegal repetition near index 0
({\d+})*

这是我的代码:

public static final Pattern pattern = Pattern.compile("({\\d+})*");
public static void main(String[] args) {
String s = "{10}ABC{2}";
Matcher matcher = pattern .matcher(s);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
}

有人可以解释一下我这里的错误吗?谢谢。

最佳答案

您的模式 存在一些问题。

  • 首先,您不需要外括号,因为您没有定义从主组保存的组。
  • 其次,您必须转义花括号 (\\{),否则它们将被解释为量词。
  • 第三,您不需要最后一个量词 (*),因为您正在迭代同一输入 String
  • 中的匹配项

所以你的模式看起来像"\\{\\d+\\}"

关于 Java Pattern 的更多信息 here .

编辑——示例

String input = "sometext {10} some text {25} sometext";
Pattern p = Pattern.compile("\\{\\d+\\}");
Matcher m = p.matcher(input);
while (m.find()) {
System.out.println(m.group());
}

输出:

{10}
{25}

关于嵌入式参数的 Java 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20549725/

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