gpt4 book ai didi

java - 非阻塞匹配器查找

转载 作者:行者123 更新时间:2023-12-02 06:51:14 25 4
gpt4 key购买 nike

我有一个这样的代码:-

Pattern pattern = Pattern.compile("((\\{(.*?)\\}\\{)|(\\{(.*?)\\}$))");
final Matcher matcher = pattern.matcher(str);
int pos = 0;

while(true)
{
if(matcher.find(pos))
{
...
pos--;
}
else
break;
}

我看到的是,如果没有发生模式匹配,则 matcher.find(pos) 会被阻止。如何避免这种阻塞性质,并在输入字符串中没有匹配项时将其输出。

最佳答案

我认为您正在寻找类似的东西。我猜您正在尝试查找输入字符串(str)中的每个模式。实现请参见代码注释。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PatternTest
{
public static void main(String[] args)
{
String str = "{test1}{test2}{test3}{test4}";

Pattern pattern = Pattern.compile("((\\{(.*?)\\}\\{)|(\\{(.*?)\\}$))");
Matcher matcher = pattern.matcher(str);
int pos = 0;

while (true)
{
if (matcher.find(pos))
{
System.out.println("MATCH START: " + matcher.start());
System.out.println("MATCH END: " + matcher.end());
System.out.println("MATCH GROUP: " + matcher.group());
System.out.println();

// Move position to end of MATCH
pos = matcher.end()-1;
}
else if(matcher.hitEnd())
{
// Break when matcher hit end
break;
}
else
{
// No Match YET - Move position 1
System.out.println("NO MATCH");
pos++;
}
}
}
}

关于java - 非阻塞匹配器查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18007942/

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