gpt4 book ai didi

java - 正则表达式 "greedy"检查

转载 作者:行者123 更新时间:2023-12-02 06:41:37 24 4
gpt4 key购买 nike

我正在尝试使用简单的正则表达式来匹配模式,但得到了一些意想不到的结果......

搜索模式和结果如下所示,

public class Test {

public static void main(String[] args) throws IOException {
Pattern p = Pattern.compile(".*xx");
Matcher m = p.matcher("yyxxxyxx");
while (m.find()){
System.out.println("match start");
System.out.println("Start = " + m.start());
System.out.println("End = " + m.end());
System.out.println("Group = " + m.group());

}

}
}

结果:

match start
Start = 0
End = 8
Group = yyxxxyxx

预期结果:

match start
Start = 0
End = 4
Group = yyxx
match start
Start = 4
End = 8
Group = xyxx

有人可以解释一下正则表达式是如何运作的吗?

最佳答案

正如您在问题标题中提到的,这里的 * 是贪婪的。这意味着它将在仍然匹配的情况下使用尽可能多的字符。您只需要添加 ? 即可使其变得懒惰。

.*?xx

关于java - 正则表达式 "greedy"检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19085574/

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