正則表達(dá)式中最短匹配模式的用法淺析
前言
最近有一次想用正則表達(dá)式從網(wǎng)頁里面抓取一些東西出來,內(nèi)容不復(fù)雜卻出現(xiàn)不少問題。下面話不多說,來一起看看詳細(xì)的介紹:
當(dāng)我們用正則表達(dá)式去匹配一個標(biāo)簽的首尾的時候,比如匹配 <h1>hello world</h1>
中的 h1 的開始和閉合標(biāo)簽
可能很多人會這樣寫
/<.*h1>/g
但是這樣真的可以嗎?
因為 * 匹配符是匹配前面一個字符的零到多個,而且它是貪婪匹配的
所以你得到的就會是下面的結(jié)果了。
顯然這并不是我們想要的,那么怎么把貪婪匹配換成最小匹配呢,
/<.*?h1>/g
上面的寫法就可以了,如下圖:
其實原理應(yīng)該很簡單,因為 ? 也是貪婪匹配,并且只能匹配0到1個,
所以它會匹配到第一個的時候就結(jié)束了,從而阻止了 * 的匹配多個的貪婪。
PS:這里再為大家提供2款非常方便的正則表達(dá)式工具供大家參考使用:
JavaScript正則表達(dá)式在線測試工具:http://tools.jb51.net/regex/javascript
正則表達(dá)式在線生成工具:http://tools.jb51.net/regex/create_reg
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript正則表達(dá)式技巧大全》、《JavaScript替換操作技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript中json操作技巧總結(jié)》、《JavaScript錯誤與調(diào)試技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)》
總結(jié)
以上就是這篇文章的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
正則表達(dá)式匹配0-10的正整數(shù)以及使用細(xì)節(jié)
我們可以使用正則表達(dá)式來代表一些我們希望的字符串類型,比如正整數(shù),下面這篇文章主要給大家介紹了關(guān)于正則表達(dá)式匹配0-10的正整數(shù)以及使用細(xì)節(jié)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11python 正則表達(dá)式 re.sub & re.subn
正則表達(dá)式一個比較常見的用途是找到所有模式匹配的字符串并用不同的字符串來替換它們。sub方法提供一個替換值,可以是字符串或函數(shù),和一個要被處理的字符串。這篇文章主要介紹了python 正則表達(dá)式 re.sub & re.subn,需要的朋友可以參考下2017-12-12js 正則學(xué)習(xí)小記之匹配字符串字面量優(yōu)化篇
昨天在《js 正則學(xué)習(xí)小記之匹配字符串字面量》談到 /"(?:\\.|[^"])*"/ 是個不錯的表達(dá)式,因為可以滿足我們的要求,所以這個表達(dá)式可用,但不一定是最好的2020-04-04正則表達(dá)式中環(huán)視的簡單應(yīng)用示例【基于java】
這篇文章主要介紹了正則表達(dá)式中環(huán)視的簡單應(yīng)用,簡單分析了環(huán)視的概念與功能,并基于java給出了正則表達(dá)式環(huán)視的具體使用技巧,需要的朋友可以參考下2017-04-04