主頁 > 知識庫 > 正則表達(dá)式中的正向預(yù)查和負(fù)向預(yù)查

正則表達(dá)式中的正向預(yù)查和負(fù)向預(yù)查

熱門標(biāo)簽:阿里云 Mysql連接數(shù)設(shè)置 服務(wù)器配置 科大訊飛語音識別系統(tǒng) 團(tuán)購網(wǎng)站 電子圍欄 銀行業(yè)務(wù) Linux服務(wù)器

日常工作當(dāng)中,大多數(shù)IDE自帶的查找工作都能滿足大多數(shù)需要。

加上正則匹配簡直如虎添翼。匹配個(gè)郵箱,電話號什么的不在話下。有時(shí)候我們可能會(huì)遇到稍微特殊的場景。

Windows 1.03 and Windows 2.0 fisrt Released in 1985 and 1987 respectively.
Windows 95 and Windows 98 are the successor.
Then Windows 2000 and Windows Xp Windows appeared.
Windows Vista is the Latest version of the family.

例如上面這一段話,有幾個(gè)場景

1、我們想匹配 Windows 后面是數(shù)字版本號的Windows 和這些字符。如 Windows 1.03 等等。

等 用?: 即 Windwos (?:[\d.]+\b)如下圖,這是直接匹配結(jié)果 , 匹配出了Windows 1.03,Windows 2.0, Windows 95,Windows 98,Windows 2000,但是沒有匹配到Windows Xp, Windows Vista,等

2、我們只想匹配滿足這些條件的'Window' ,但不包括后面的字符

用 (?= pattern) 即 Windows (?=[\d.]+\b) 他把Windows的空格也匹配了。這一過程就是正向匹配。

3、如果我想匹配這些Windows 字段,它后面跟的不是數(shù)字或者版本號,我改用

(?!pattern)即 Windows (?![\d.]+\b) 這一過程叫做正向匹配不滿足(我覺得這樣叫跟容易理解), 它匹配后面不跟著滿足pattern( [\d.]+\b) 的Windows。

4、我想匹配Windows前面是數(shù)字的Windows.我們用 (?=[\d].) Windows 這叫逆向匹配(左箭頭就說明了是從右往左,好記吧),他們匹配Windows前面是一個(gè)或者多個(gè)數(shù)字的'Windows'.

如圖這里只匹配到了 和11挨著的 Windows。

5、我想匹配Windows前面不是數(shù)字的Windows。我想匹配 Windows 前面不是數(shù)字的Windows ,通常叫做逆向不匹配。我把它叫做逆向匹配不滿足pattern。

用(?! pattern)keyword.

它匹配到了 在11之后的 Windows之外的所有Windows(不包括行首的Windows)。

關(guān)于零寬斷言,我認(rèn)為這個(gè)說法讓人覺得很學(xué)術(shù),不易理解。我的理解是,把零寬理解為關(guān)鍵字前面或者后面的正則表達(dá)式匹配出來的字符不會(huì)被顯示出來,也不被用來當(dāng)做常規(guī)的子查詢。 它只起到判斷作用。

總結(jié)

以上所述是小編給大家介紹的正則表達(dá)式中的正向預(yù)查和負(fù)向預(yù)查,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

您可能感興趣的文章:
  • 正則表達(dá)式中的正向預(yù)查和負(fù)向預(yù)查實(shí)例分析
  • 淺析正則表達(dá)式中的lastIndex以及預(yù)查

標(biāo)簽:江蘇 棗莊 萍鄉(xiāng) 衡水 蚌埠 廣元 大理 衢州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《正則表達(dá)式中的正向預(yù)查和負(fù)向預(yù)查》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266