Python正則貪婪非貪婪

2022-09-13 00:21:23 字數 1059 閱讀 9751

自己遇到的問題,小記一下!

# -*- coding: utf-8 -*-

__author__ = 'johnny'

import re

line = "baaaaacfbsbdada"

reg_str = ".*(b.*b).*"

match_str = re.match(reg_str, line)

if match_str:

print match_str.group(1)

----------------------------------------

line = "baaaaacfbsdada"

reg_str = ".*(b.*b).*"

match_str = re.match(reg_str, line)

if match_str:

print match_str.group(1)

----------------------------------------

line = ""

reg_str = ".*"

match_str = re.match(reg_str, line)

if match_str:

print match_str.group() is

''print match_str.group() is

true

print match_str.group() is

false

以上**輸出為:

>>> bsb

>>> baaaaacfb

>>>

true

>>>

false

>>>

false

第一種情況是,在滿足分組條件下,貪婪,所以『bsb』左側全部被貪婪。

第二種情況是,在滿足分組條件下,無法再貪婪,所以左側開始就直接匹配分組了。

第三種情況是,』.*』可以匹配空,所以找到了。但是空既不是true也不是false。

非貪婪就比較好理解了。

python非貪婪匹配 python正則非貪婪模式

那如果只想匹配1次怎麼辦呢,這就是正則中非貪婪模式的概念了 原理就是利用?與其他匹配次數規則進行組合 單個匹配規則 表示匹配0 n次 表示匹配1 n次 表示匹配0 1次 三者可組合成非貪婪模式匹配次數解析 簡而言之 它們必須結合左右的子串進行匹配,左邊正則必須非空,右邊正則可以為空,中心思想就是在匹...

python正規表示式 貪婪 非貪婪

主要就是.與.的區別,是貪婪的,是非貪婪的例子如下 import re line cats are smarter than dogs matchobj1 re.match r are line matchobj2 re.match r are line matchobj1.group 1 matc...

正則非貪婪匹配

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