正則表達式貪婪和非貪婪模式


*、+限定符都是貪婪的,因為它們會盡可能多的匹配文字,只有在它們的后面加上一個?就可以實現非貪婪或最小匹配。

文本:

<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

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM