鍍金池/ 問(wèn)答/HTML/ 正則表達(dá)式貪婪模式

正則表達(dá)式貪婪模式

1.代碼

clipboard.png

2.問(wèn)題:為什么 7 和 9 之間是 2個(gè)$符號(hào),而不是 3個(gè)$ 符號(hào)呢?(對(duì)貪婪模式有基礎(chǔ)的理解)

回答
編輯回答
初心

因?yàn)槟阌玫氖切翘?hào)啊,它會(huì)貪婪的匹配兩個(gè)8,如果想得到你的結(jié)果,把星換成“?”就得了。sg這markdown有點(diǎn)cd

2018年4月8日 22:45
編輯回答
薄荷糖

量詞默認(rèn)都是貪婪模式,如* ? +,貪婪的意思是盡可能多的匹配。
*表示前面的內(nèi)容匹配0到多次,注意包含0次,也就是說(shuō)可以匹配0個(gè)字符,也就是僅僅匹配一個(gè)位置。

所以字符串12345678890
匹配1前面的位置,此時(shí)*匹配的次數(shù)是0;
匹配2前面的位置,此時(shí)*匹配的次數(shù)是0;
...
匹配7前面的位置,此時(shí)*匹配的次數(shù)是0;
然后,當(dāng)從8前面的位置開始匹配的時(shí)候,此時(shí)*匹配的次數(shù)是2,此次匹配結(jié)束后,位置移動(dòng)到9前面的位置;
匹配9前面的位置,此時(shí)*匹配的次數(shù)是0;
匹配0前面的位置,此時(shí)*匹配的次數(shù)是0;
匹配0后面的位置,此時(shí)*匹配的次數(shù)是0;

所以,當(dāng)替換的時(shí)候,會(huì)在1,2,3,4,5,6,7前面添加一個(gè)$,然后兩個(gè)88替換成一個(gè)$,然后9前面添加一個(gè)$,0前面添加一個(gè)$,0后面添加一個(gè)$

2017年11月12日 00:57