限定符

在上一小节中的表格中,我们知道 . 可以匹配除换行符以外的任意字符,使用.匹配下列文本:

  1. expression

但是.每次只匹配一个字符,如果想一次匹配多个,则要使用限定符

限定符作用
*匹配零次或多次
+匹配一次或多次
?匹配零次或一次
{3}匹配三次
{3,5}匹配三到五次
{3,}匹配三次或以上

下面通过实例了解限定符的区别。 es 的匹配结果

  1. expression

es+ 的匹配结果(e,一个或多个 s)

  1. expression

es* 的匹配结果(e,零或多个 s)

  1. expression

es? 的匹配结果(e,零或一个 s)

  1. expression

贪婪与懒惰

使用限定符进行匹配时,默认匹配尽可能多的字符。无论用 .* 还是 .+ 匹配下列文本,都会匹配全部

  1. expression

这种方式称为“贪婪模式”。在限定符之后加 ? 则匹配尽可能少的字符,称为“懒惰模式”[49]

例如,使用贪婪模式a.+b匹配:

  1. aaabab

使用懒惰模式a.+?b匹配:

  1. aaabab

[49] .+ 匹配一个或多个任意字符,在贪婪模式中,它匹配尽可能多的字符;而懒惰模式中(.+?),则只匹配一个字符;.{3,5}在贪婪模式中尽可能匹配5个字符,在懒惰模式中(.{3,5}?)只匹配3个字符;?* 这样可以匹配零次的限定符,在懒惰模式下不匹配任何字符(.*?.??)