貪婪匹配和懶惰匹配

2022-09-05 00:42:17 字數 828 閱讀 6120

符號用法.

匹配除「\r\n」之外的任何單個字元。要匹配包括「\r\n」在內的任何字元,請使用像「[\s\s]」的模式。

?匹配前面的子表示式0到1次

*匹配前面的子表示式人任意次

+匹配前面的子表示式一次或多次(大於等於1次)

表示式 .* 的意思很好理解,就是單個字元匹配任意次,即貪婪匹配。 

表示式 .*? 是滿足條件的情況只匹配一次,即懶惰匹配

這是什麼 意思?我們用例子來解釋。

var str = 'anna is  years old,bob is  years old too';

var expr = //g;

console.log(str.replace(expr, '13'));

命令列輸出: anna is 13 years old,bob is 13 years old too

可以看出,懶惰模式下,只要滿足條件,就不再向後匹配,以下是貪婪模式:

var str = 'anna is  years old,bob is  years old too';

var expr = //g;

console.log(str.replace(expr, '13'))

命令列輸出: anna is 13 years old too

中間所有滿足條件的都被替換了

像 .+* 以及 .*+這種表示式是錯誤的,命令行會報錯。如果希望貪婪匹配,直接 .* 或者 .+就可以

正則中的「貪婪匹配」和「懶惰匹配」

進行正則匹配時,像 以及 m,n 這幾種量詞 匹配數量 預設是屬於貪婪量詞,會進行貪婪匹配。什麼叫做貪婪匹配呢?貪婪就是盡可能的多匹配,貪心的意思。比如現在目標字串是 aaaa 四個a組成的字串 a 和 a 都會匹配 aaaa a?則會匹配 a 這就是貪婪匹配,實際運用中,有的時候我們卻希望盡可能少...

PHP正則貪婪 懶惰匹配模式

當正規表示式中包含能接受重複的限定符時,通常的行為是 在使整個表示式能得到匹配的前提下 匹配盡可能多的字元。例如以下表示式將匹配以a開始,以b結束的最長字串 a.b 如果用來搜尋 aabab 它會匹配整個字串 aabab 這就是貪婪匹配。有時,需要匹配盡可能少的字元,也就是懶惰匹配。前面給出的限定符...

貪婪匹配和非貪婪匹配

貪婪模式 在整個表示式匹配成功的前提下,盡可能多的匹配 非貪婪模式 在整個表示式匹配成功的前提下,盡可能少的匹配 重複匹配0次或1次 重複匹配0次或更多次 重複匹配1次或更多次 預設情況下是貪婪的!content abbbbc pattern re.compile r ab result patte...