作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么我得到以下带有 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/
我是一名优秀的程序员,十分优秀!