gpt4 book ai didi

java - RegExp 不情愿量词的混淆? java

转载 作者:行者123 更新时间:2023-12-04 11:35:47 24 4
gpt4 key购买 nike

为什么我得到以下带有 Relucutant 量词的正则表达式代码的输出 ab

    Pattern p = Pattern.compile("abc*?");
Matcher m = p.matcher("abcfoo");
while(m.find())
System.out.println(m.group()); // ab

同样,为什么我得到以下代码的空索引?

   Pattern p = Pattern.compile(".*?");
Matcher m = p.matcher("abcfoo");
while(m.find())
System.out.println(m.group());

最佳答案

除了 Konrad Rudolph 的回答:

abc*?

在任何情况下都匹配“ab”,只有在必须时才匹配“c”。由于 *? 后面没有任何内容,因此正则表达式引擎会立即停止。如果你有:

abc*?f

然后它将匹配 "abcf" 因为 "c" 必须匹配才能允许 "f" 匹配,也。另一种表达方式:

.*?

不匹配任何内容,因为此模式是 100% 可选的。

.*?f

将再次匹配 "abcf"

关于java - RegExp 不情愿量词的混淆? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2833694/

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