婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > 如何使用正則匹配最后一個(gè)字符串詳解

如何使用正則匹配最后一個(gè)字符串詳解

熱門標(biāo)簽:百度地圖標(biāo)注飯店位置怎么 施工地圖標(biāo)注怎么做 怎么在高德地圖標(biāo)注行走軌跡 清遠(yuǎn)陽(yáng)山400電話號(hào)碼如何申請(qǐng) 個(gè)性化地圖標(biāo)注在線 襄陽(yáng)房產(chǎn)電銷機(jī)器人招商 安徽移動(dòng)外呼系統(tǒng) 百度地圖標(biāo)注名編輯 深圳400電話辦理那家好

前幾天遇到一個(gè)需求,輸入的是

user>
    user>
        name>a/name>
    /user>
    user>
        name>a/name>
    /user>
/user>
password>123/password>

要求拿到

user>
    user>
        name>a/name>
    /user>
    user>
        name>a/name>
    /user>
/user>

也就是去掉最后一個(gè)/user>后面的字符串。

方法有很多,我首先想到的是用正則匹配去掉/user>后面的字符串。

最后寫出來(lái)的表達(dá)式是(?=/user>)(?![\w\W]*/user>)[\w\W]+

首先用(?=/user>)匹配所有前面是/user>的位置,如圖,總共有三個(gè)位置。

這里我們正則表達(dá)式(?=/user>)的意思就是匹配的位置之前的字符串是/user>,也就是我們匹配到的位置在/user>之后。

這里用到了正則表達(dá)式語(yǔ)法中的斷言,有的書上也稱該語(yǔ)法為預(yù)查或者環(huán)視,都是一樣的用法。有如下語(yǔ)法:
(?=pattern) 零寬正向先行斷言 (?!pattern) 零寬負(fù)向先行斷言 (?=pattern) 零寬正向后行斷言 (?!pattern) 零寬負(fù)向后行斷言

這里用到的是(?=pattern),零寬表示它匹配的是在字符串中的位置,如同^匹配字符串串首,$匹配字符串串尾。正向代表它必須滿足pattern。后行代表它匹配的位置在pattern之后。

其次,再這三個(gè)位置上進(jìn)行篩選,能夠看出這三個(gè)位置的區(qū)別是后面是否有/user>,如果沒(méi)有的話那么它就是最后一個(gè)/user>后面的位置。在之前的表達(dá)式后面添上(?![\w\W]*?/user>)此時(shí)表達(dá)式變?yōu)?code>(?=/user>)(?![\w\W]*?/user>)。

能夠看到得到了最后一個(gè)匹配結(jié)果。

這里的正則表達(dá)式(?!pattern) 是零寬負(fù)向先行斷言,也就是它會(huì)往后匹配pattern,匹配到的位置在pattern之前,并且匹配到的字符串必須不滿足pattern。

(?![\w\W]*?/user>)的意思是在匹配到的位置后面必須不是[\w\W]*?/user>,\w匹配的是[a-zA-Z0-9_]即匹配字母數(shù)字和下劃線,而\W匹配的是[^a-zA-Z0-9_]即不是字母數(shù)字也不是下劃線的字符,同時(shí)匹配這兩個(gè)就相當(dāng)于匹配任意字符。[\w\W]后面的*代表匹配0-任意多次,后面的?代表懶惰模式,即只要滿足條件就立即返回。

最后,在之前的正則表達(dá)式后面加上[\w\W]+貪婪匹配即盡可能多的匹配該位置后面的字符串。最終的正則表達(dá)式是(?=/user>)(?![\w\W]*?/user>)[\w\W]*

最后的最后用四張圖簡(jiǎn)單地描述四種斷言的不同之處。

這里輸入的字符串都是123456。

(?=3),它匹配的位置是后面的字符為3的位置。

 

(?=3),它匹配的位置是前面的字符為3的位置。

 

(?!3)匹配的位置是后面的字符不為3的位置,可以看到箭頭所指的地方?jīng)]有被匹配到,其他位置都被匹配到了。

(?!3)匹配的位置是前面的字符不為3的位置,可以看到箭頭所指的地方?jīng)]有被匹配到,其他位置都被匹配到了。

總結(jié)

到此這篇關(guān)于如何使用正則匹配最后一個(gè)字符串詳解的文章就介紹到這了,更多相關(guān)正則匹配最后一個(gè)字符串內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 正則表達(dá)式匹配不包含某些字符串的技巧
  • js 正則表達(dá)式學(xué)習(xí)筆記之匹配字符串
  • 正則表達(dá)式模式匹配字符串基礎(chǔ)知識(shí)
  • 正則匹配密碼只能是數(shù)字和字母組合字符串功能【php與js實(shí)現(xiàn)】
  • 請(qǐng)教一個(gè)正則表達(dá)式,匹配所有Html標(biāo)簽外部的指定字符串
  • 使用正則表達(dá)式匹配[***]樣式的字符串

標(biāo)簽:欽州 臨夏 黑河 中衛(wèi) 駐馬店 阜陽(yáng) 延邊 南昌

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《如何使用正則匹配最后一個(gè)字符串詳解》,本文關(guān)鍵詞  如何,使用,正則,匹配,最后,;如發(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)文章
  • 下面列出與本文章《如何使用正則匹配最后一個(gè)字符串詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于如何使用正則匹配最后一個(gè)字符串詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 吉林市| 菏泽市| 洪泽县| 炉霍县| 兴山县| 类乌齐县| 南漳县| 延寿县| 桦甸市| 汕尾市| 新干县| 荣成市| 隆德县| 高陵县| 宁阳县| 广宗县| 新沂市| 珲春市| 安图县| 全州县| 遂溪县| 文水县| 黑河市| 华亭县| 楚雄市| 余姚市| 兴隆县| 石景山区| 沭阳县| 梧州市| 邓州市| 江达县| 克东县| 凉城县| 泾源县| 积石山| 武威市| 颍上县| 锡林浩特市| 林周县| 卫辉市|