假如有一段文本,你只想匹配最短的可能,而不是最長。本文主要為大家介紹了關於正規表示式中最短匹配模式用法的相關資料。
前言
最近有一次想用正規表示式從網頁裡面抓取一些東西出來,內容不複雜卻出現不少問題。下面話不多說,來一起看看詳細的介紹:
當我們用正規表示式去匹配一個標籤的首尾的時候,比如匹配<h1>hello world</h1>
中的h1 的開始和閉合標籤
可能很多人會這樣寫
/<.*h1>/g
但是這樣真的可以嗎?
因為 * 匹配是匹配前面一個字元的零到多個,而且它是貪婪匹配的
所以你得到的就會是下面的結果了。
顯然這不是我們想要的,那麼怎麼把貪婪匹配換成最小匹配呢,
/<.*?h1>/g
上面的寫法就可以了,如下圖:
其實原理應該很簡單,因為? 也是貪婪匹配,只能匹配0到1個,
所以它會匹配到第一個的時候就結束了,從而阻止了* 的匹配多個的貪婪。
以上內容就是正規表示式中最短匹配模式的用法,希望能幫助大家。
相關推薦:
#以上是正規表示式中最短匹配模式的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!