正则表达加vs明星差异?

Dav*_*801 78 php regex

有什么区别:

(.+?)
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上,请参阅此处的贪婪示例

  • “懒惰”是“不舒服”的更常见术语 (2认同)

Que*_*tin 21

第一个(+)是一个或多个字符.第二个(*)是零个或多个字符.两者都是非贪婪的(?)并匹配任何东西(.).


Dav*_*dom 7

A +匹配前一个模式的一个或多个实例.A *匹配前一个模式的零个或多个实例.

所以基本上,如果你使用a +,必须至少有一个模式实例,如果你使用*它,如果没有它的实例,它仍然会匹配.


Xop*_*ter 6

+ 匹配至少一个字符

* 匹配任何数字(包括0)的字符

?指示慵懒的表情,所以它会匹配尽可能少的字符越好.


Mil*_*uss 6

在正则表达式,{i,f}意味着“之间i,以f匹配”。让我们看一下以下示例:

  • {3,7} 意味着 3 到 7 场比赛
  • {,10} 表示最多 10 场比赛,没有下限(即下限为 0)
  • {3,} 表示至少 3 个匹配,没有上限(即上限为无穷大)
  • {,} 表示匹配次数没有上限或下限(即下限为0,上限为无穷大)
  • {5} 正好是 4

大多数优秀的语言都包含缩写,RegEx 也是如此:

  • + 是简写 {1,}
  • * 是简写 {,}
  • ? 是简写 {,1}

这意味着+需要至少 1 个匹配项,同时*接受任意数量的匹配项或根本不?接受匹配项,并且接受不超过 1 个匹配项或零个匹配项。

信用:Codecademy.com


jer*_*oen 5

+是最小的,*也可以是零.

  • `“+是最小的一个”`这句话是什么意思? (3认同)

Mad*_*iha 5

星号与加号非常相似,唯一的区别是加号匹配 1 个或多个前面的字符/组,而星号则匹配 0 个或多个。


Azr*_*mil 5

考虑以下是要匹配的字符串。

ab
Run Code Online (Sandbox Code Playgroud)

该模式(ab.*)将返回与捕获组匹配的结果ab

虽然模式(ab.+)将不匹配,并且不返回任何内容。

但是,如果将字符串更改为following,它将返回aba为pattern(ab.+)

aba
Run Code Online (Sandbox Code Playgroud)