孟岩写了一篇文章说 正则表达式 ,我试了一下java的,见 Java Tutorial

1.Greedy

2.Reluctant

3.Possessive

先看个例子:

while (matcher.find()) {
                console.format(”I found the text /”%s/” starting at ” +
                   “index %d and ending at index %d.%n”,
                    matcher.group(), matcher.start(), matcher.end());
                found = true;
            }

比如说字符串是“<book> <title> Perl Hacks </title> </book>/t”

那么pattern是

1。”<.*>”,则结果是:I found the text “<book> <title> Perl Hacks </title> </book>” starting at index 0 and ending at index 42.

2。”<.*?>”,则结果是:

I found the text “<book>” starting at index 0 and ending at index 6.
I found the text “<title>” starting at index 7 and ending at index 14.
I found the text “</title>” starting at index 26 and ending at index 34.
I found the text “</book>” starting at index 35 and ending at index 42.

3。”<.*+>”,那么就什么也找不到

greedy:吃掉整个字符串,看是否match,如果不配,则backtracking吐出一个个字符,看是否匹配

reluctant:也就是我们说的lazy,过程相反,从字符串开始,一个个字符看是否匹配,最后做的是整个字符串

possessive:吃掉整个字符串,但是不往外吐,结果是没找到(作用是??),做一次且一次

更多推荐