*、+限定符都是貪婪的,因為它們會盡可能多的匹配文字,只有在它們的后面加上一個?就可以實現非貪婪或最小匹配。
文本:
<H1>Chapter 1 - 介紹正則表達式</H1>
貪婪:下面的表達式匹配從開始小於符號 (<) 到關閉 H1 標記的大於符號 (>) 之間的所有內容。
/<.*>/
非貪婪:如果您只需要匹配開始和結束 H1 標簽,下面的非貪婪表達式只匹配 <H1>。
/<.*?>/
如果只想匹配開始的 H1 標簽,表達式則是:
/<\w+?>/
PS: 通過在 *、+ 或 ? 限定符之后放置 ?,該表達式從"貪心"表達式轉換為"非貪心"表達式或者最小匹配。
PS: 正則表達式在線測試:https://c.runoob.com/front-end/854
PS:
關於grep的非貪婪模式
以上文本為例
可以在grep中使用perl語法,所以grep -P
可以工作,但是grep -E
它是相同的,egrep
不會起作用(這將是貪婪的)。
另見:http : //blog.vinceliu.com/2008/02/non-greedy-regular-expression-matching.html
