re 正則匹配的非貪婪匹配

2022-08-02 01:45:10 字數 1602 閱讀 6878

非貪婪匹配

將盡可能少的匹配內容,當?出現在其他的重複次數後面時會將貪婪模式改為非貪婪模式。?如

abc.*?

abc.+?

非貪婪匹配:盡可能少的匹配??

?*? # *號表示 *號前面的字元出現0--無數個 ?號表示最少匹配

+?   # +號表示 +號前面的字元出現1--無數個

?? # ??表示0--1個

print(re.findall(r'ab', 'aababbabbb')) # ['a', 'ab', 'abb', 'abbb']

print(re.findall(r'ab?', 'aababbabbb')) # ['a', 'a', 'a', 'a']

print(re.findall(r'ab', 'aababbabbb')) # ['a', 'ab', 'abb', 'abbb']

print(re.findall(r'ab?', 'aababbabbb')) # ['a', 'a', 'a', 'a']

print(re.findall(r'ab', 'aababbabbb')) # ['ab', 'abb', 'abbb']

print(re.findall(r'ab?', 'aababbabbb')) # ['ab', 'ab', 'ab']

print(re.findall(r'ab*', 'aababbabbb')) # ['a', 'ab', 'abb', 'abbb']

print(re.findall(r'ab*?', 'aababbabbb')) # ['a', 'a', 'a', 'a']

print(re.findall(r'ab+', 'aababbabbb')) # ['ab', 'abb', 'abbb']

print(re.findall(r'ab+?', 'aababbabbb')) # ['ab', 'ab', 'ab']

print(re.findall(r'ab?', 'aababbabbb')) # ['a', 'ab', 'ab', 'ab']

print(re.findall(r'ab??', 'aababbabbb')) # ['a', 'a', 'a', 'a']

print(re.findall(r'', '')) # ['']

print(re.findall(r'a', 'a')) # ['', '']

# 非貪婪匹配結合單個匹配結果是沒有任何意義的

print(re.findall(r'b*?', 'bbbbbbbb'))

print(re.findall(r'(?:ab)*?', 'bbbbbbbb'))

# 非貪婪匹配的應用場景,正則一定會有首尾標識,中間匹配的結果會有非貪婪匹配的語法

s = 'abc

'print(re.findall(r'<.*>', s)) # ['abc

']print(re.findall(r'<.*?>', s)) # ['', '', '', '']

print(re.findall(r'(.*)', s)) # ['abc

']print(re.findall(r'(.*?)', s)) # ['abc', '']

正則非貪婪匹配

string str 註冊商 xiamen ename network technology corporation limited dba ename corp,網域名稱伺服器 whois.ename.com,相關 dns 伺服器 ns1.ename.net,dns 伺服器 ns2.ename.n...

re模組中的非貪婪匹配

python的re模組中有貪婪匹配和非貪婪匹配之分,當使用 時會匹配零個或多個,使用 時會匹配乙個或多個.當使用?在前邊特殊符號前時會進行非貪婪匹配,匹配零個或者乙個,今天主要討論非貪婪匹配中存在的坑.import re res re.findall a?aaa print res a a a re...

貪婪匹配和非貪婪匹配

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