Java正則之貪心婚配、惰性婚配。本站提示廣大學習愛好者:(Java正則之貪心婚配、惰性婚配)文章只能為提供參考,不一定能成為您想要的結果。以下是Java正則之貪心婚配、惰性婚配正文
貪心量詞:
先看全部字符串是否是一個婚配。假如沒有發明婚配,它去失落最初字符串中的最初一個字符,並再次測驗考試。假如照樣沒有發明婚配,那末 再次去失落最初一個字符串,這個進程會一向反復直到發明一個婚配或許字符串不剩任何字符。簡略量詞都是貪心量詞。
惰性量詞:
先看字符串中的第一個字母是否是一個婚配,假如零丁著一個字符還不敷,就讀入下一個字符,構成兩個字符的字符串。假如還沒有發明婚配,惰性量詞持續從字符串中添加字符直到發明一個婚配或許全部字符串都檢討過也沒有婚配。惰性量詞和貪心量詞的任務方法正好相反。
安排量詞:
只測驗考試婚配全部字符串。假如全部字符串不克不及發生婚配,不做進一步測驗考試。
貪心量詞 惰性量詞 安排量詞 描寫
-------------------------------------------------------------------------------------
? ?? ?+ 可以湧現0次或1次,但至少湧現1次
* *? *+ 可以湧現隨意率性次,也能夠不湧現
+ +? ++ 湧現1次或屢次,但至多湧現1次
{n} {n}? {n}+ 必定湧現n次
{n,m} {n,m}? {n,m}+ 至多湧現n次,但至少不克不及跨越m次
{n,} {n,}? {n,}+ 可以湧現隨意率性次,但至多湧現n次
例如:我們要從字符串abbbaabbbaaabbb1234中取得abbb,aabbb,aaabbb的婚配
1、貪心量詞
var regexp = /.*bbb/g;
var a = str.match(regexp);
alert(a.length); //output:1
alert(a[0]); //output:abbbaabbbaaabbb
貪心量詞的任務進程可以如許表現:
a)abbbaabbbaaabbb1234
b)abbbaabbbaaabbb123
c)abbbaabbbaaabbb12
d)abbbaabbbaaabbb1
e)abbbaabbbaaabbb //true
可以看到,貪心量詞在獲得一次婚配後就會停滯任務,固然我們加了'g'(全局婚配)
2、惰性量詞
var regexp = /.*?bbb/g;
var a = str.match(regexp);
alert(a.length); //output:3
alert(a[0]); //output:abbb
alert(a[1]); //output:aabbb
alert(a[2]); //output:aaabbb
惰性量詞的任務進程可以如許表現:
a)a
b)ab
c)abb
d)abbb //保留成果,並從下一個地位從新開端
e)a
f)aa
g)aab
h)aabb
j)aabbb //保留成果,並從下一個地位從新開端
e)a
e)aa
e)aaa
e)aaab
e)aaabb
e)aaabbb //保留成果,並從下一個地位從新開端
因為JS是不支撐安排量詞的,所以安排量詞我們只能用JAVA來演示:
String string = "abbbaabbbaaabbb1234";
Pattern p = Pattern.compile(".*+bbb");
Matcher m = p.matcher(string);
System.out.println(m.find()); //output:false
由於安排量詞藻用一刀切的婚配方法,如:
a)abbbaabbbaaabbb1234 //false
以上所述就是本文的全體內容了,願望年夜家可以或許愛好,可以或許對年夜家闇練控制java正則婚配有所贊助。
請您花一點時光將文章分享給您的同伙或許留下評論。我們將會由衷感激您的支撐!