日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

正则表达式匹配原理

發(fā)布時(shí)間:2024/8/5 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 正则表达式匹配原理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

正則表達(dá)式匹配原理:
本章節(jié)將會(huì)簡(jiǎn)單的介紹一下正則表達(dá)式匹配原理,這將有助于書(shū)寫(xiě)更為有效率的正則表達(dá)式,而不僅僅能夠完成匹配任務(wù)。
一.關(guān)于正則表達(dá)式引擎:
正則引擎大體上可分為不同的兩類(lèi):DFA和NFA。
1.DFA是Deterministic finite automaton的縮寫(xiě),確定型有窮自動(dòng)機(jī)。
2.NFA是Non-deterministic finite automaton的縮寫(xiě),非確定型有窮自動(dòng)機(jī)。NFA又可以分為兩類(lèi):
1): Traditional NFA,傳統(tǒng)型非確定有窮自動(dòng)。
2): POSIX NFA,符合標(biāo)準(zhǔn)的非確定型有窮自動(dòng)機(jī)。
DFA引擎不需要進(jìn)行回溯,所以匹配效率一般情況下要高,但是它并不支持捕獲組,于是也就不支持反向引用和$這種形式的引用。
POSIX NFA是指符合POSIX 標(biāo)準(zhǔn)的NFA引擎,它的主要特點(diǎn)是提供longest-leftmost匹配,也就是說(shuō)在找到最左側(cè)最長(zhǎng)匹配之前,它將繼續(xù)回溯,此種引擎對(duì)非貪婪模式不支持。
當(dāng)前大多數(shù)語(yǔ)言都是使用傳統(tǒng)型NFA正則引擎,因?yàn)樗鼮閺?qiáng)大靈活。
二.字符串的組成:
想要真正理解正則表達(dá)式的匹配原理,那么首先就要知道在正則表達(dá)式眼中,字符串是由哪些成分構(gòu)成的,圖示如下:


上面的圖片得出,字符串不但由字符組成,還包括字符之間的位置。對(duì)于字符串"antzone"而言,它是由7個(gè)字符和8個(gè)位置構(gòu)成。
三.零寬和占有字符表達(dá)式:
在正則表達(dá)式中,如果子表達(dá)式匹配到的是字符內(nèi)容,而非位置,并且會(huì)被保存到匹配結(jié)果中,那么這個(gè)子表達(dá)式是占有字符的。如果子表達(dá)式匹配的是位置,或者匹配的內(nèi)容不被保存在最終結(jié)果中,那么就認(rèn)為這個(gè)子表達(dá)式是零寬的。
占有字符是互斥的,零寬度是非互斥的。也就是一個(gè)字符,同一時(shí)間只能由一個(gè)子表達(dá)式匹配,而一個(gè)位置,卻可以同時(shí)由多個(gè)零寬度的子表達(dá)式匹配。

注意:這里所說(shuō)的子表達(dá)式并非只有用小括號(hào)括起來(lái)的表達(dá)式,而是正則表達(dá)式中的任意匹配單元。
四.控制權(quán)的傳動(dòng):
正則表達(dá)式當(dāng)開(kāi)始匹配的時(shí)候,一般是由一個(gè)子表達(dá)式獲取控制權(quán),從字符串中的某一個(gè)位置開(kāi)始嘗試匹配,一個(gè)子表達(dá)式開(kāi)始嘗試匹配的位置,是從前一子表達(dá)匹配成功的結(jié)束位置開(kāi)始的,看下面的例子:
(子表達(dá)式一)(子表達(dá)式二)
如果子表達(dá)式一是零寬度的,那么它的匹配起始位置和結(jié)束位置是同一個(gè)位置,如果位置是0,那么子表達(dá)式二將從位置0進(jìn)行匹配。
如果子表達(dá)式一是占有字符的,開(kāi)始匹配位置0,結(jié)束匹配位置是4,那么子表達(dá)式二的開(kāi)始匹配位置就是4。
五.正則表達(dá)式匹配分解:
分解演示一:
1.將要進(jìn)行匹配的字符串:"antzone"。
2.正則表達(dá)式:/zone/。
匹配過(guò)程如下:
首先由正則表達(dá)式中字符"z"取得控制權(quán),然后去嘗試匹配字符串中的第一個(gè)字符"a",匹配失敗,則繼續(xù)嘗試第二個(gè)字符"n"依然會(huì)失敗,直到字符"z",匹配成功,這樣控制權(quán)由正則表達(dá)式中的字符"z"傳遞給字符"o",由于字符"z"已經(jīng)被匹配,所以字符"o"將會(huì)從位置4開(kāi)始匹配,由"o"來(lái)匹配"o",匹配成功,這樣依次傳遞下去,最終正則表達(dá)式匹配成功,匹配結(jié)果為"zone"。
實(shí)例如下:

var str="antzone";
var reg=/zone/;
console.log(str.match(reg));

分解演示二:
1.將要進(jìn)行匹配的字符串:"antzone"。
2.正則表達(dá)式:/an?t/。
匹配過(guò)程如下:
首先由正則表達(dá)式中的元字符取得控制權(quán),開(kāi)始去嘗試匹配字符串"antzone",它匹配的是單詞邊界位置,匹配成功后,控制權(quán)交給正則表達(dá)式字符"a",由于""是零寬的,所以"a"從位置0開(kāi)始匹配,匹配字符"a"成功,然后將控制權(quán)交給"n?",由于“?”是匹配優(yōu)先量詞(同時(shí)記錄一個(gè)備選狀態(tài),如果匹配不成功則進(jìn)行回溯),所以會(huì)先嘗試進(jìn)行匹配,能夠成功"n",控制權(quán)然后交給字符"t",也能夠匹配成功,匹配結(jié)果為:"ant"。
實(shí)例如下:

var str="antzone";
var reg=/an?t/;
console.log(str.match(reg));

總結(jié)

以上是生活随笔為你收集整理的正则表达式匹配原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av电影网站在线观看 | 女同中文字幕 | 91漂亮少妇露脸在线播放 | 欧美在线资源 | 不卡中文字幕 | 成人av久久| 国产黄色高清 | 色综合天天综合网国产成人网 | 精品国产三级 | 精品人妻一区二区免费 | 奇米网888| 国产精品综合在线 | 免费人成在线 | 亚洲女同志亚洲女同女播放 | 九九人人 | 国产做受高潮漫动 | 无码人妻一区二区三区精品视频 | 在线亚洲成人 | 免费看黄色的视频 | 中文字幕日本一区二区 | 天堂在线国产 | 91九色视频在线观看 | 成年人深夜福利 | 中文字幕人妻一区二区三区视频 | 国产精品情侣呻吟对白视频 | 99久久精品免费看国产 | 国产剧情av在线播放 | 女人天堂av | 原神淫辱系列同人h | 婷婷九九| 秋霞午夜影院 | 亚洲精品水蜜桃 | 国产swag在线观看 | 欧美丰满少妇人妻精品 | 国产私拍视频 | wwwxxx在线观看| 免费在线观看成年人视频 | 美女在线播放 | 神马午夜一区二区 | 91精品免费在线 | 亚洲成a人片在线 | 亚洲国产精品久久久久爰色欲 | 久久人妻无码aⅴ毛片a片app | 善良的女朋友在线观看 | 亚洲天堂手机在线 | 91一区二区三区 | 人与动物2免费观看完整版电影高清 | 日韩免| 精品一区二区三区在线视频 | 日吊视频 | 亚洲va国产va天堂va久久 | 久草手机在线 | 色哟哟无码精品一区二区三区 | 日韩网红少妇无码视频香港 | 日韩色一区 | 国产欧美又粗又猛又爽 | 一区二区三区福利 | 免费日韩欧美 | 日韩欧美大片 | 啪啪网站免费观看 | 日韩美女中文字幕 | 骚av在线| 国产深夜福利在线 | 蜜臀久久99精品久久一区二区 | 国产少妇自拍 | 在线看h网站 | 黄色三极片 | 毛片av网址| 欧美性生活在线视频 | 日韩一区二区在线观看视频 | 日韩 欧美 中文 | 亚洲天天做| 欧美日韩久久 | 亚洲激情a| 日韩激情四射 | 亚洲欧美中文日韩在线v日本 | 中国老熟妇自拍hd发布 | 久久久久久久久久久久久久久 | 91精品国产成人 | 亚洲伦理在线视频 | 性色av一区二区三区在线观看 | 无码视频一区二区三区 | 18禁裸男晨勃露j毛免费观看 | 人妻洗澡被强公日日澡 | 538在线精品视频 | 伊人狼人综合 | 亚洲天堂网址 | 狠狠干欧美 | 性欧美videossex精品 | 男女激情av | 夜夜天堂 | 国产精品久久AV无码 | 欧美激情中文字幕 | 国产精品7 | 九九精品影院 | 中文字幕 视频一区 | 中文字幕精品一二三四五六七八 | 又色又爽又黄 | 美女插插 |