濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 正則表達(dá)式斷言、巡視(Assertions)、正向斷言、反向斷言介紹

正則表達(dá)式斷言、巡視(Assertions)、正向斷言、反向斷言介紹

熱門(mén)標(biāo)簽:地圖標(biāo)注商戶中心要收錢(qián)多少 地圖標(biāo)注字母的軟件 實(shí)用地圖標(biāo)注app css百度地圖標(biāo)注位置顯示 鄂州人工智能電銷(xiāo)機(jī)器人軟件 菏澤智能ai電銷(xiāo)機(jī)器人銷(xiāo)售公司 宿遷智能外呼系統(tǒng)供應(yīng)商 400免費(fèi)電話去哪申請(qǐng) 線上教育ai外呼系統(tǒng)

斷言(Assertions)在正則表達(dá)式概念里面難理解,它通常指的是在目標(biāo)字符串的當(dāng)前匹配位置進(jìn)行的一種測(cè)試但這種測(cè)試并不占用目標(biāo)字符串,也即不會(huì)移動(dòng)模式在目標(biāo)字符串中的當(dāng)前匹配位置。詳細(xì)可以看看,正則表達(dá)式匹配解析過(guò)程探討分析(正則表達(dá)式匹配原理),里面提到“零寬度“很多元字符,只是對(duì)特殊位置進(jìn)行匹配,它們可以理解為斷言。

斷言元字符

常見(jiàn)斷言元字符有: \b, \B, \A, \Z, \z, ^ ,$ 它們只是表示特殊位置,各自作用如有字符串AB,帶位置表示為:0A1B2

元字符 意義(以上面帶位置字符串說(shuō)明)
^ 行首,字符串首 表示位置0
$ 行尾,字符串尾部,表示位置2
\b 字分界線,可以表示:0,2位置
\B 非字分界線,可以表示1位置
\A 目標(biāo)的開(kāi)頭(獨(dú)立于多行模式) 表示位置0
\Z 目標(biāo)的結(jié)尾或位于結(jié)尾的換行符前(獨(dú)立于多行模式) 表示位置2
\z 目標(biāo)的結(jié)尾(獨(dú)立于多行模式)表示位置2
\G 目標(biāo)中的第一個(gè)匹配位置
A,Z,z,G很少使用

這些斷言的測(cè)試都是一些基于當(dāng)前位置的測(cè)試,斷言還支持更多復(fù)雜的測(cè)試條件。更復(fù)雜的斷言以子模式方式來(lái)表示,它包括先行(前向)斷言(Lookahead assertions)和后行(后向)斷言(Lookbehind assertions),這些斷言判斷只做匹配判斷條件,不會(huì)記錄在匹配結(jié)果中,不會(huì)匹配字符。

先行斷言、正向斷言、正向巡視(Lookahead assertions)

先行斷言,常有表示(?=pattern),從當(dāng)前匹配位置開(kāi)始測(cè)試后面匹配字符串是否成立,還有(?!pattern)這樣兩種格式,我們來(lái)看看一個(gè)例子。源字符串:“abc100”,正則表達(dá)式是:
/[a-z]+(?=\d+)/ ,我們分析下過(guò)程如下圖:

首先由正則表達(dá)式字符 [a-z]+ 取得控制權(quán),匹配字符:”abc”,位置從”0”開(kāi)始匹配,變成3。從該位置測(cè)試/d+是否成立。匹配到字符100,返回成立。因此正則表達(dá)式正向斷言成功。返回匹配字符串”abc”

(?!pattern) 只是,正向匹配,當(dāng)后面沒(méi)有匹配成功,將返回真。以下是系統(tǒng)源字符串:abc100,測(cè)試結(jié)果如下:

后行斷言、反向斷言、反向巡視(Lookbehind assertions)

后行斷言,常見(jiàn)表達(dá)式是:(?=pattern)或者(?!pattern)格式。正則表達(dá)式里面,不要出現(xiàn)不固定長(zhǎng)度量詞,可能會(huì)出現(xiàn)死循環(huán)。匹配出錯(cuò)。表示當(dāng)前位置左邊將出現(xiàn)匹配字符,則返回真,后面匹配正常。因?yàn)槿绻霈F(xiàn)在最左邊,默認(rèn)位置從0開(kāi)始,匹配都是失敗的。一般都從后面正則表達(dá)式開(kāi)始匹配,再回溯,直到匹配到為止。我們看看下面例子:源字符串:“abc100+=“,正則表達(dá)式是:”(?=\w)\w+”,匹配過(guò)程如下圖:

首先由正則表達(dá)式字符 /\w+/取得控制權(quán),匹配字符:”abc100”,位置從”0”開(kāi)始匹配,匹配到6個(gè)字符。從該位置0檢測(cè)左變\w匹配失敗。因此/\w+/從字符b開(kāi)始匹配到”bc100”,測(cè)試它左側(cè)有字符”a”,反向斷言正確。因此匹配到字符串“bc100”,(?!pattern),只是沒(méi)有匹配成功返回真,其它都一樣!

后記:從這篇文章,我們發(fā)現(xiàn)搜索特點(diǎn)都是從左到有,一般正向斷言放到,正則表達(dá)式后,反向斷言放到匹配正則表達(dá)式前。但是,這里也可以放到前或后。這里就不再舉例。歡迎交流討論!

您可能感興趣的文章:
  • 正則表達(dá)式中環(huán)視的簡(jiǎn)單應(yīng)用示例【基于java】
  • 正則應(yīng)用之 逆序環(huán)視探索 .
  • 正則匹配原理之 逆序環(huán)視深入 .
  • 正則基礎(chǔ)之 環(huán)視 Lookaround
  • javascript 正則表達(dá)式分組、斷言詳解
  • 正則表達(dá)式之零寬斷言實(shí)例詳解【基于PHP】
  • 正則表達(dá)式零寬斷言詳解
  • 正則表達(dá)式環(huán)視概念與用法分析

標(biāo)簽:鞍山 六安 梅州 三亞 恩施 池州 綿陽(yáng) 咸陽(yáng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《正則表達(dá)式斷言、巡視(Assertions)、正向斷言、反向斷言介紹》,本文關(guān)鍵詞  正則,表達(dá)式,斷言,巡視,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《正則表達(dá)式斷言、巡視(Assertions)、正向斷言、反向斷言介紹》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于正則表達(dá)式斷言、巡視(Assertions)、正向斷言、反向斷言介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    历史| 五华县| 汉沽区| 高碑店市| 蒙山县| 南昌县| 高要市| 龙口市| 海南省| 峨边| 黄骅市| 安新县| 平凉市| 江口县| 汕尾市| 翁源县| 故城县| 巢湖市| 海南省| 东乡| 麻城市| 武威市| 图们市| 贺州市| 陆丰市| 长沙县| 新宾| 时尚| 革吉县| 方山县| 东阳市| 循化| 阜阳市| 拜泉县| 葵青区| 喜德县| 竹溪县| 贵溪市| 皮山县| 汉川市| 定日县|