正規表示式 貪婪模式和非貪婪模式

2021-10-01 07:20:33 字數 612 閱讀 4932

在正規表示式中,存在兩種匹配模式。

貪婪模式:正規表示式,在符合條件前提下,會盡可能多的匹配結果

懶惰模式:在正規表示式,如果符合條件的前提下,會盡可能少的匹配。

在python中正規表示式預設是貪婪模式(個別語言也可能是非貪婪模式),貪婪模式就是總會嘗試匹配到更多的字元。非貪婪模式則反之,總是嘗試匹配盡可能少的字元。

在*、?、+、後面加上?,可以將貪婪模式變成非貪婪模式。 *?

重複任意次,但盡可能少重複

+?重複一次或更多次,但盡可能少重複

??重複0次或1次,但盡可能少重複

?重複n到m次,但盡可能少重複

?重複n次以上,但盡可能少重複

案例

>>

>content=

">>

>re.findall(r"(.*)"

,content)

#貪婪模式

>>

>re.findall(r"(.*?)"

,content)

#非貪婪模式[,,,]

正規表示式 貪婪非貪婪模式

貪婪與非貪婪模式影響的是被量詞修飾的子表示式的匹配行為,貪婪模式在整個表示式匹配成功的前提下,盡可能多的匹配,而非貪婪模式在整個表示式匹配成功的前提下,盡可能少的匹配。非貪婪模式只被部分nfa引擎所支援。1.舉乙個例子 string str abcaxc patter p ab.c 貪婪匹配 正規表...

正規表示式貪婪和非貪婪模式

限定符都是貪婪的,因為它們會盡可能多的匹配文字,只有在它們的後面加上乙個?就可以實現非貪婪或最小匹配。文字 貪婪 下面的表示式匹配從開始小於符號 之間的所有內容。非貪婪 如果您只需要匹配開始和結束 h1 標籤,下面的非貪婪表示式只匹配 如果只想匹配開始的 h1 標籤,表示式則是 可以在grep中使用...

正規表示式貪婪與非貪婪模式

之前做程式的時候看到過正規表示式的貪婪與非貪婪模式,今天用的時候就想不起來了,現在這裡總結一下,以備自己以後用到注意。1.什麼是正規表示式的貪婪與非貪婪匹配 如 string str abcaxc patter p ab c 貪婪匹配 正規表示式一般趨向於最大長度匹配,也就是所謂的貪婪匹配。如上面使...