有什么区别:
(.+?)
Run Code Online (Sandbox Code Playgroud)
和
(.*?)
Run Code Online (Sandbox Code Playgroud)
当我在我的php preg_match
正则表达式中使用它时?
ste*_*ema 126
他们被称为量词.
*
前面的表达式中的0个或更多个
+
前述表达式中的一个或多个
默认情况下,量词是贪婪的,这意味着它匹配尽可能多的字符.
在?
一个量词后改变行为,使这个量词"ungreedy",意味着它会匹配尽可能少.
示例贪婪/不同意
例如在字符串" abab "上
a.*b
将匹配"abab"(preg_match_all将返回一个匹配,"abab")
while a.*?b
只匹配起始"ab"(preg_match_all将返回两个匹配,"ab")
您可以在线测试您的正则表达式,例如在Regexr上,请参阅此处的贪婪示例
A +
匹配前一个模式的一个或多个实例.A *
匹配前一个模式的零个或多个实例.
所以基本上,如果你使用a +
,必须至少有一个模式实例,如果你使用*
它,如果没有它的实例,它仍然会匹配.
在正则表达式,{i,f}
意味着“之间i
,以f
匹配”。让我们看一下以下示例:
{3,7}
意味着 3 到 7 场比赛 {,10}
表示最多 10 场比赛,没有下限(即下限为 0){3,}
表示至少 3 个匹配,没有上限(即上限为无穷大){,}
表示匹配次数没有上限或下限(即下限为0,上限为无穷大){5}
正好是 4 大多数优秀的语言都包含缩写,RegEx 也是如此:
+
是简写 {1,}
*
是简写 {,}
?
是简写 {,1}
这意味着+
需要至少 1 个匹配项,同时*
接受任意数量的匹配项或根本不?
接受匹配项,并且接受不超过 1 个匹配项或零个匹配项。
信用:Codecademy.com
考虑以下是要匹配的字符串。
ab
Run Code Online (Sandbox Code Playgroud)
该模式(ab.*)
将返回与捕获组匹配的结果ab
虽然模式(ab.+)
将不匹配,并且不返回任何内容。
但是,如果将字符串更改为following,它将返回aba
为pattern(ab.+)
aba
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
65106 次 |
最近记录: |