84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
Java使用正则匹配捕捉1 Pattern p = Pattern.compile("name="sign" value="(.*)"/>");2 Pattern p = Pattern.compile("name="sign" value=*"(.?)**"/>");第二个比第一个多了一个?号,请问其中区别是什么
小伙看你根骨奇佳,潜力无限,来学PHP伐。
贪婪和非贪婪的区别。
简单来说,非贪婪是匹配到就停,不管后面还有没有,贪婪是只要后面还符合,就不会停。
当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)。
复制自:http://deerchao.net/tutorials... 正则表达式30分钟入门,贪婪与懒惰部分
前者在找到一个匹配之后就会停止,而后者会找到所有匹配的目标。
这个问题涉及正则表达式中贪婪模式与懒惰模式(也称为非贪婪模式)首先来看看这两个的定义
贪婪模式,最大限度匹配*,+,'{n,}',.*都属于贪婪模式,所谓最大限度匹配,我举个例子
*
+
.*
var pattern = /a.*e/ console.log("abcd fsdfsdfsesfdfsdfsesdfedfsdfses".match(pattern)); //结果为abcd fsdfsdfsesfdfsdfsesdfedfsdfse
懒惰模式,在匹配成功的前提下,尽可能少的去匹配。还是上面这个例子:
var pattern = /a.*?e/ console.log("abcd fsdfsdfsesfdfsdfsesdfedfsdfses".match(pattern)); //结果为abcd fsdfsdfse
?会选取最小的匹配的。
贪婪和非贪婪的区别。
简单来说,非贪婪是匹配到就停,不管后面还有没有,贪婪是只要后面还符合,就不会停。
当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。
有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:
a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)。
复制自:http://deerchao.net/tutorials... 正则表达式30分钟入门,贪婪与懒惰部分
前者在找到一个匹配之后就会停止,而后者会找到所有匹配的目标。
这个问题涉及正则表达式中贪婪模式与懒惰模式(也称为非贪婪模式)
首先来看看这两个的定义
贪婪模式,最大限度匹配
*
,+
,'{n,}',.*
都属于贪婪模式,所谓最大限度匹配,我举个例子懒惰模式,在匹配成功的前提下,尽可能少的去匹配。
还是上面这个例子:
?会选取最小的匹配的。