什么是懒惰,贪婪和占有欲量词之间的区别是什么?(What are the differences b

2019-07-18 06:34发布

如何以下量词不同 - 对于场景,速度等。

  • ????+所有匹配0或1次
  • **? and *? and * +`所有比赛0次或更多次
  • ++?++所有匹配1次或多次

  • ?*+贪婪的
  • ??*?+? 不愿意/懒惰
  • ?+*+++有着很强的占有欲

谁能帮我了解这些术语的含义? 为什么有相同的作业中的每个量词的三个变化?

Answer 1:

就拿串

aaaab

看看下面的正则表达式匹配如何吧:

Regex          Submatches
               group 1  group 2  group3
(a?)(a*)(ab)   a        aa       ab
(a??)(a*)(ab)           aaa      ab
(a?+)(a*)(ab)  a        aa       ab
(a*)(a?)(ab)   aaa               ab
(a*?)(a?)(ab)  aa       a        ab
(a*+)(a?)(ab)  aaaa              <Match fails!>
(a+)(a*)(ab)   aaa               ab 
(a+?)(a*)(ab)  a        aa       ab
(a++)(a*)(ab)  aaaa              <Match fails!>

说明:

  • a? 尝试匹配一个a ,但它的准备,如果这是必要的整场比赛成功匹配什么。
  • a?? 尝试匹配什么,但它准备匹配一个a ,如果这是必要的整场比赛成功。
  • a?+尝试匹配一个a 。 如果能做到这一点,就不会退缩如果这是必要的整体匹配成功匹配什么。 如果它不能匹配的a ,那么它会很乐意没有匹配,虽然。
  • a*尝试匹配尽可能多的a S作为是可以的,但它的准备,以配合较少的a ,如果这是必要的整场比赛成功S,甚至什么都没有。
  • a*? 尝试匹配什么,但它的准备,以匹配同样多a S作为绝对必要的,以便为整个比赛的成功,但不多。
  • a*+尝试尽可能多的符合a S作为它可以。 如果能做到这一点,就不会退缩,以配合较少的a ,如果说有必要对整个比赛的成功秒。 如果不能匹配,甚至一个a的话,那会很乐意没有匹配,虽然。
  • a+尝试匹配尽可能多的a S作为是可以的,但它的准备,以配合较少的a ,如果这是必要的整场比赛成功秒(但至少有一个)。
  • a+? 尝试匹配只有一个a ,但它准备匹配同样多a S作为绝对必要的,以便为整个比赛的成功,但不多。
  • a++试图尽可能多的符合a S作为它可以。 如果能做到这一点,就不会退缩,以配合较少的a ,如果说有必要对整个比赛的成功秒。 如果不能匹配,甚至一个单一的a ,则正则表达式失败。


文章来源: What are the differences between lazy, greedy and possessive quantifiers?