懒惰的比赛{x,y}?没意义?

时间:2012-07-21 15:09:26

标签: regex

{2,5}中5的意义是什么?它匹配前面令牌的2到5个。这是一个惰性匹配,在满足下一个标记之前将匹配尽可能少的字符。

我举了示例abcccccabccc并且在{2,5}中没有看到5的使用?它只连续2次匹配。

有人可以举出任何第二个参数扮演任何角色的例子吗? (在这种情况下为5 {2,5}?)

abc{2,5} is greedy match 

First match: abccccc
Second match: abccc

abc{2,5}? is lazy match
First match: abcc
Second match: abcc

reference

3 个答案:

答案 0 :(得分:2)

请参阅此示例>>

字符串:123abcccccabc

正则表达式:/123(abc{2,5}?)abc/

将匹配组#1中的abccccc,因为匹配后面的abc也需要匹配。

知道了吗?

答案 1 :(得分:2)

说你的正则表达式是"(.{0,10}?)"。这将匹配最多10个字符的引用字符串。例如

""
"foo"
"1234567890"

懒惰会确保字符串中不能出现引号。例如,如果你匹配一个带有两个引用部分的字符串,那么正则表达式只匹配第一个:

// "(.{0,10}?)"
"foo" "bar"
 ^^^

省略惰性修饰符,它会匹配两者,错误地捕获foo" "bar作为字符串内容。

// "(.{0,10})"
"foo" "bar"
 ^^^^^^^^^

答案 2 :(得分:0)

是和否。它的意义取决于它的后续内容。例如,abc{2,5}?cabc{2,5}?a不同。