代码改变世界

正则表达式:匹配次数限定符

2014-03-27 11:32  于为源  阅读(3137)  评论(0编辑  收藏  举报

出处:http://blog.163.com/cjingzm@126/blog/static/11865111920131263553775/

可使被修饰的表达式重复固定次数,也可以限定一定的重复匹配的次数范围。

在限定符之后的表达式能够匹配成功的情况下,不定次数的限定符总是尽可能的多匹配。如果之后的表达式匹配失败,限定符可适当“让出”能够匹配的字符,以使整个表达式匹配成功。这种模式就叫“贪婪模式”。

限定符

说明

{n}

表达式固定重复n次,比如:"\w{2}" 相当于 "\w\w"

{m, n}

表达式尽可能重复n次,至少重复m次:"ba{1,3}"可以匹配 "ba"或"baa"或"baaa"

{m, }

表达式尽可能的多匹配,至少重复m次:"\w\d{2,}"可以匹配 "a12","x456"...

?

表达式尽可能匹配1次,也可以不匹配,相当于 {0, 1}

+

表达式尽可能的多匹配,至少匹配1次,相当于 {1, }

*

表达式尽可能的多匹配,最少可以不匹配,相当于 {0, }

“勉强模式”限定符:

在限定符之后添加问号(?),则使限定符成为“勉强模式”。勉强模式的限定符,总是尽可能少的匹配。如果之后的表达式匹配失败,勉强模式也可以尽可能少的再匹配一些,以使整个表达式匹配成功。

限定符

说明

{m, n}?

表达式尽量只匹配m次,最多重复n次。

{m, }?

表达式尽量只匹配m次,最多可以匹配任意次。

??

表达式尽量不匹配,最多匹配1次,相当于 {0, 1}?

+?

表达式尽量只匹配1次,最多可匹配任意次,相当于 {1, }?

*?

表达式尽量不匹配,最多可匹配任意次,相当于 {0, }?

“占有模式”限定符:

在限定符之后添加加号(+),则使限定符成为“占有模式”。占有模式的限定符,总是尽可能多的匹配。与“贪婪模式”不同的是,即使之后的表达式匹配失败,“占有模式”也不会“让出”自己能够匹配的字符。

限定符

说明

{m, n}+

表达式尽可能重复n次,至少重复m次。

{m, }+

表达式尽可能的多匹配,至少重复m次。

?+

表达式尽可能匹配1次,也可以不匹配,相当于 {0, 1}+

++

表达式尽可能的多匹配,至少匹配1次,相当于 {1, }+

*+

表达式尽可能的多匹配,最少可以不匹配,相当于 {0, }+