作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
到目前为止,我还没有在正则表达式中使用过不情愿的量词,我查看了该站点的一些问题以了解其功能和用途。虽然similar question描述性很强,我仍然无法理解它与 java tutorial 中的示例有何关联.我知道不情愿的量词匹配尽可能少的情况。那么,它如何解释正则表达式
".*?foo"
"xfooxxxxxxfoo"
"xfoo"
和
"xxxxxxfoo"
?
".*+foo"
最佳答案
“Greedy, Reluctant, and Possessive Quantifiers之间的差异”部分教程页面上的描述对我来说似乎很清楚。哪一部分你不明白?
要回答您的具体问题:
".*?foo"
,不情愿的量词( .*?
)首先什么都不抓;模式的其余部分 ( foo
) 无法匹配。匹配备份到不情愿的量词,然后抓取一个字符( x
);然后模式的其余部分匹配。然后整个模式再次开始(在第一个 "foo"
之后)并且直到它捕获所有的 x
才匹配。第二个之前的字符 foo
,此时它具有第二个匹配项。 ".*+foo"
),所有格量词 ( .*+
) 获取所有可能的输入(因为 "."
匹配任何内容)并且没有任何剩余的内容可以匹配 "foo"
图案的一部分。因为 ".*+"
是占有欲,它不会返回任何东西;因此,与贪婪量词不同,当匹配备份到所有格量词时,它只会失败。 关于java - 在正则表达式中使用不情愿量词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16263061/
我是一名优秀的程序员,十分优秀!