正则表达式

一般正则表达是都会选择最大的方式匹配如:

对象: abcdqqqqd

正则表达式: abc.*d


匹配的将不是abcd而是:abcdqqqqd


如果要匹配abcd,则需要在匹配处增加"?":


abc.*?d


这里:


.*表示的就是贪婪匹配: 先把输入字符全部纳入, 看看是否匹配,不匹配则吐出最后一个字符,然后再匹配,不断进行这样的过程。


.*?表示的是勉强.先纳入第一个字符,看是否匹配,然后逐渐将后面的字符放入,找到就OK, 并且能找到尽量多的符合条件。


另外还有一个:


.*+表示侵占, 这个不常用到,跟贪婪算法一样,也是把字符全部纳入, 看匹配是否成功。不管是否成功,就结束,不吐出字符继续匹配。

.*+会消耗所有的输入字符,所以下面的侵占匹配,将不成功:

reg: .*+123

src:  2221312312abc123


所以说用处不大.

你可能感兴趣的:(算法,正则表达式)