當我們用正則表達式去匹配一個標簽的首尾的時候,比如匹配 <h1>hello world</h1>
中的 h1
的開始和閉合標簽
可能很多人會這樣寫
/<.*h1>/g
但是這樣真的可以嗎?
因為 *
匹配符是匹配前面一個字符的零到多個,而且它是貪婪匹配的
所以你得到的就會是下面的結果了。
image.png
顯然這并不是我們想要的,那么怎么把貪婪匹配換成最小匹配呢,
/<.*?h1>/g
上面的寫法就可以了,如下圖:
image.png
其實原理應該很簡單,因為 ?
也是貪婪匹配,并且只能匹配0到1個,
所以它會匹配到第一個的時候就結束了,從而阻止了 *
的匹配多個的貪婪。