gpt4 book ai didi

java - 为什么 Mattcher 在成功找到后会抛出异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:06:38 25 4
gpt4 key购买 nike

我正在尝试编写一个循环,以在输入字符串中找到“${arbitraryTextHere}”的所有实例。例如:

someText${findMe}moreText${findMeToo}EvenMoreText${DontForgetMe}

这是我的代码:

    Pattern placeholderPattern = Pattern.compile("\\$\\{[\\w|\\d]+\\}");
Matcher placeholderMatcher = placeholderPattern.matcher(templateString);

int workingIndex = 0;
while(placeholderMatcher.find()){
workingIndex = placeholderMatcher.start();
}

注意:我正在测试的 templateString 是 S"omeString ${someProp}"

奇怪的是 .find() 必须返回 true 才能进入循环,但是 .start() 会抛出 IllegalStateException。这很奇怪的原因是 .start() 仅在匹配器的内部 first 变量小于 0 时抛出 IllegalStateException,但 .find() ,通过 Matcher 的 boolean search(int from) 方法,将确保 first 为零或更大,除非未找到匹配项,但如果未找到匹配项found then .find() 将返回 false,我们不会在循环体中结束。

那么这里到底发生了什么?

更新:所以我封装了上面的代码,以便它全部在一个单元测试中运行,然后它就可以工作了。所以我认为问题与将它放在从单元测试调用方法的类中有关。但这有点奇怪。我将深入研究问题的这一方面,然后发布更新。

更新:好吧,我试过一次又一次地关闭它(我重新启动了我的 IntelliJ 并重新编译了我的代码),现在它不再坏了,所以我想我一定是在那个部门搞砸了。

最佳答案

根据我的问题的最新更新,重新启动 IntelliJ 并重新编译我的代码修复了问题。

关于java - 为什么 Mattcher 在成功找到后会抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20617421/

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