hahaha

hahaha

解析正則表達式中的.*,.*?,.+?的含義

文章主要介紹了解析正則表達式中的.*,.*?,.+? 的含義,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

1. .*

. 表示匹配除換行符 \n 之外的任何單字符,*表示零次或多次。所以.*在一起就表示任意字符出現零次或多次。沒有?表示貪婪模式。比如a.*b,它將會匹配最長的以 a 開始,以 b 結束的字符串。如果用它來搜索aabab的話,它會匹配整個字符串aabab。這被稱為貪婪匹配。
又比如模式src=.*, 它將會匹配最長的以 src=` 開始,以 ` 結束的最長的字符串。用它來搜索 <img src=``test.jpg` width=`60px` height=`80px`/> 時,將會返回 src=``test.jpg` width=`60px` height=`80px`

2. .*?

?跟在 * 或者 + 後邊用時,表示懶惰模式。也稱非貪婪模式。就是匹配盡可能少的字符。就意味著匹配任意數量的重複,但是在能使整個匹配成功的前提下使用最少的重複。
a.*?b匹配最短的,以 a 開始,以 b 結束的字符串。如果把它應用於aabab的話,它會匹配aab(第一到第三個字符)和ab(第四到第五個字符)。
又比如模式 src=`.*?`,它將會匹配 src=` 開始,以 ` 結束的尽可能短的字符串。且開始和結束中間可以沒有字符,因為 * 表示零到多個。用它來搜索 <img src=``test.jpg` width=`60px` height=`80px`/> 時,將會返回 src=``

3. .+?

同上,?跟在 * 或者 + 後邊用時,表示懶惰模式。也稱非貪婪模式。就意味著匹配任意數量的重複,但是在能使整個匹配成功的前提下使用最少的重複。
a.+?b匹配最短的,以 a 開始,以 b 結束的字符串,但 a 和 b 中間至少要有一個字符。如果把它應用於ababccaab的話,它會匹配abab(第一到第四個字符)和aab(第七到第九個字符)。注意此時匹配結果不是ab,abaab。因為 a 和 b 中間至少要有一個字符。
又比如模式 src=`.+?`,它將會匹配 src=` 開始,以 ` 結束的尽可能短的字符串。且開始和結束中間必須有字符,因為 + 表示 1 到多個。用它來搜索 <img src=``test.jpg` width=`60px` height=`80px`/> 時,將會返回 src=``test.jpg`。注意與.*?時的區別,此時不會匹配src=``,因為src=`` 之間至少有一個字符。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。