常用函式
match() 決定 re 是否在字串剛開始的位置匹配
search() 掃瞄字串,找到這個 re 匹配的位置
findall() 找到 re 匹配的所有子串,並把它們作為乙個列表返回
finditer() 找到 re 匹配的所有子串,並把它們作為乙個迭代器返回
修飾符:上面函式第三個引數
dotall, s 使 . 匹配包括換行在內的所有字元
ignorecase, i 使匹配對大小寫不敏感
locale, l 做本地化識別(locale-aware)匹配
multiline, m 多行匹配,影響 ^ 和 $
verbose, x 能夠使用 res 的 verbose 狀態,使之被組織得更清晰易懂
(?p...) 匹配的命名組,讓匹配的東西能以鍵 name 的方式取得
(?p=name) 引用已匹配的命名組
(?=...) 正向匹配,例如 window (?=2000|xp|vista)
(?<=...) 返向匹配,例如 (?=2000|xp|vista) window, 與 (?=...) 剛好相反
(?!...) 正向不匹配
(?例子1:(?p...)
import re
m = re.search('(?p[a-z]+)(?p\d+)', 'ab12')
print repr(m.group())
print repr(m.group('word')), ',', repr(m.group(1))
print repr(m.group('num')), ',', repr(m.group(2))
輸出結果
'ab12'
'ab' , 'ab'
'12' , '12'
例子2:(?=...) 與 (?<=...)
import re
m = re.findall('(?<=1)(a|b|c)', 'a1b2c3')
print repr(m)
m = re.findall('(a|b|c)(?=1)', 'a1b2c3')
print repr(m)
輸出結果:
['b']
['a']
例子3:(?!...) 與 (?
import re
m = re.findall('(?輸出結果:
['a', 'c']
['b', 'c']
例子(組合):
import re
m = re.search('(?<=abc)end(?p[a-z]+)(?p\d+)start(?=hello)', 'abcendde12starthello')
print repr(m.group())
print repr(m.group('word')), ',', repr(m.group(1))
print repr(m.group('num')), ',', repr(m.group(2))
輸出結果:
'endde12start'
'de' , 'de'
'12' , '12'
python 裝飾器,高階與運用
小 tips 寫遞迴函式的章節提到過,當函式不斷呼叫自身,直到被pycharm發現丟擲異常。實際上是因為棧溢位。什麼是棧溢位呢?python中只要呼叫乙個函式,函式中自己呼叫自己,每次呼叫都會放到記憶體中反覆遞迴,但是當原函式沒結束時 就是說沒有設定遞迴結束標示 遞迴就不會結束,直到記憶體被用完,棧...
Python高階正則
1 importre2 3 p re.compile 0 9 45 m p.match 13435asadb 67print m.group 一 上面的第二行和第三行也可以合併成一行來寫 m p.match 0 9 13435asadb 效果是一樣的,區別在於第一種方式是提前對要匹配的格式進行編譯,...
Git運用高階
git建立本地分支 git checkout b x 或git branch x git checkout x git從倉庫轉殖 轉殖專案 git clone git ip 專案.git 轉殖專案並在本地建立開發分支 git clone git ip 專案.git b develop git更新本地...