gpt4 book ai didi

尽管匹配但未找到 Java 命名的捕获组

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

我正在尝试使用 Java 的命名捕获组从字符串中提取整数。我知道还有其他更简单的方法可以提取数字,但我想使用正则表达式,因为我想确保字符串的其余部分与模式匹配。

line = "Data: 5 Total";
Pattern p = Pattern.compile("(Data: (?<value>\\d+) Total)");
Matcher m = p.matcher(line);
assert m.matches();
String value = m.group("value");

上述代码失败返回,线程“main”中出现异常 java.lang.IllegalStateException: 未找到匹配

唯一被捕获的组是完整的输入字符串,“Data: 5 Total”。为什么内部命名组“value”没有被捕获?

最佳答案

在尝试访问匹配结果之前,您需要调用 find() 以使正则表达式引擎找到其匹配项。您也可以删除整个模式周围的捕获组并引用 group() 来获取整个匹配。

String s  = "Data: 5 Total";
Pattern p = Pattern.compile("Data: (?<value>\\d+) Total");
Matcher m = p.matcher(s);
if (m.find()) {
String value = m.group("value");
// do something with the match result ...
}

关于尽管匹配但未找到 Java 命名的捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26644577/

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