IT培訓(xùn)網(wǎng)
IT在線學(xué)習(xí)
3. 量詞
量詞也稱重復(fù)。掌握{(diào)m,n}的準(zhǔn)確含義后,只需要記住一些簡(jiǎn)寫(xiě)形式。
3.1 簡(jiǎn)寫(xiě)形式
{m,} 表示至少出現(xiàn)m次。
{m} 等價(jià)于{m,m},表示出現(xiàn)m次。
? 等價(jià)于{0,1},表示出現(xiàn)或者不出現(xiàn)。記憶方式:?jiǎn)柼?hào)的意思表示,有嗎?
+ 等價(jià)于{1,},表示出現(xiàn)至少一次。記憶方式:加號(hào)是追加的意思,得先有一個(gè),然后才考慮追加。
* 等價(jià)于{0,},表示出現(xiàn)任意次,有可能不出現(xiàn)。記憶方式:看看天上的星星,可能一顆沒(méi)有,可能零散有幾顆,可能數(shù)也數(shù)不過(guò)來(lái)。
3.2 貪婪匹配和惰性匹配
看如下的例子
- var regex = /\d{2,5}/g;
- var string = "123 1234 12345 123456";
- console.log( string.match(regex) );
- // => ["123", "1234", "12345", "12345"]
其中正則/\d{2,5}/,表示數(shù)字連續(xù)出現(xiàn)2到5次。會(huì)匹配2位、3位、4位、5位連續(xù)數(shù)字。
但是其是貪婪的,它會(huì)盡可能多的匹配。你能給我6個(gè),我就要5個(gè)。你能給我3個(gè),我就3要個(gè)。反正只要在能力范圍內(nèi),越多越好。
我們知道有時(shí)貪婪不是一件好事(請(qǐng)看文章最后一個(gè)例子)。而惰性匹配,就是盡可能少的匹配:
- var regex = /\d{2,5}?/g;
- var string = "123 1234 12345 123456";
- console.log( string.match(regex) );
- // => ["12", "12", "34", "12", "34", "12", "34", "56"]
其中/\d{2,5}?/表示,雖然2到5次都行,當(dāng)2個(gè)就夠的時(shí)候,就不在往下嘗試了。
通過(guò)在量詞后面加個(gè)問(wèn)號(hào)就能實(shí)現(xiàn)惰性匹配,因此所有惰性匹配情形如下:
- {m,n}?
- {m,}?
- ??
- +?
- *?
對(duì)惰性匹配的記憶方式是:量詞后面加個(gè)問(wèn)號(hào),問(wèn)一問(wèn)你知足了嗎,你很貪婪嗎?
4. 多選分支
一個(gè)模式可以實(shí)現(xiàn)橫向和縱向模糊匹配。而多選分支可以支持多個(gè)子模式任選其一。
具體形式如下:(p1|p2|p3),其中p1、p2和p3是子模式,用|(管道符)分隔,表示其中任何之一。
例如要匹配”good”和”nice”可以使用/good|nice/。測(cè)試如下:
- var regex = /good|nice/g;
- var string = "good idea, nice try.";
- console.log( string.match(regex) );
- // => ["good", "nice"]
但有個(gè)事實(shí)我們應(yīng)該注意,比如我用/good|goodbye/,去匹配”goodbye”字符串時(shí),結(jié)果是”good”:
- var regex = /good|goodbye/g;
- var string = "goodbye";
- console.log( string.match(regex) );
- // => ["good"]
而把正則改成/goodbye|good/,結(jié)果是:
- var regex = /goodbye|good/g;
- var string = "goodbye";
- console.log( string.match(regex) );
- // => ["goodbye"]
也就是說(shuō),分支結(jié)構(gòu)也是惰性的,即當(dāng)前面的匹配上了,后面的就不再嘗試了。
>>本文地址:http://www.jecan.cn/zhuanye/2020/52598.html
聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學(xué)歷
3 您更想做哪個(gè)方向的工作?
07月15日Java
咨詢/試聽(tīng)07月15日Python+人工智能
咨詢/試聽(tīng)07月15日Web前端
咨詢/試聽(tīng)07月15日UI設(shè)計(jì)
咨詢/試聽(tīng)07月15日大數(shù)據(jù)
咨詢/試聽(tīng)07月15日Java
咨詢/試聽(tīng)07月15日Python+人工智能
咨詢/試聽(tīng)07月15日Web前端
咨詢/試聽(tīng)07月15日UI設(shè)計(jì)
咨詢/試聽(tīng)07月15日大數(shù)據(jù)
咨詢/試聽(tīng)