gpt4 book ai didi

没有 matcher.find(),Java Regex : Why matcher. group() 不起作用?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:38:48 28 4
gpt4 key购买 nike

以下代码在首次运行时给出异常。但是当我在匹配器行上设置断点并在 Netbeans Watcher 中评估一些命令时。有用。为什么??

String regex = "/I-TASSER/output/(?<jobId>.*?)>";
Pattern pattern;
Matcher matcher;
if (Pattern.compile(regex).matcher(document.html()).find()) {
pattern = Pattern.compile(regex);
matcher = pattern.matcher(document.html());
jobId = matcher.group("jobId"); //always give exception, so breakpoint here
}

我在 netbeans 变量观察器中放置了以下四行

matcher.group("jobId"); //exception
matcher.find(); //true
matcher.group("jobId"); //S12345 /*found*/

为什么会这样?

最佳答案

您正在重新分配 if 语句中的 PatternMatcher 引用。

因此,您需要在该上下文中再次调用 matcher.find() 才能调用 matcher.group(),否则它会抛出一个 IllegalStateException - 参见 API .

更清晰、更简单的语法是:

Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(document.html());
if (matcher.find()) {
jobId = matcher.group("jobId");
}

最后的建议,正则表达式不适合解析html。

查看关于它的大量其他帖子。

关于没有 matcher.find(),Java Regex : Why matcher. group() 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25851293/

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