貪婪模式:<.*> 匹配 'b ' ,匹配盡可能多的字元。*,+,?
非貪婪模式:<.*?> 匹配 '',匹配盡可能少的字元。*?,+?,??
匹配m到n個重複字元
?只匹配m個重複字元
[amk]匹配'a'、'm'、or 'k'.
[a-z]匹配任何乙個小寫字母
[0-5][0-9]匹配00-59間的任意兩位數
[0-9a-fa-f]匹配任意十六進製制數
'-'在[a\-z]、[-a]、[a-]裡只匹配自身'-'
[(+*)]只匹配'('、'+'、'*' or ')'
import re
p = re.compile('a.*b') # 貪婪模式
p.findall('aabbbabab')
>>>['aabbbabab']
p = re.compile('a.*?b') # 非貪婪模式
p.findall('aabbbabab')
>>>['aab', 'ab', 'ab']
# ip位址匹配
import re
pattern = re.compile(r'((?:[0-9]\.|[1-9][0-9]\.|1[0-9]\.|2[0-4][0-9]\.|25[0-5]\.)(?:25[0-5]|2[0-4][0-9]|1[0-9]|[1-9][0-9]|[0-9]))')
content = '100.100.100.100 10.0.3.8 123.4.6.8'
m = pattern.findall(content)
print(m)
>>>['100.100.100.100', '10.0.3.8', '123.4.6.8']
phone = '13434-48945-232 # 一串有間隔的數字碼'
num = re.sub('#.*','',phone) # 刪除注釋
print('num is : ',num)
>>>num is : 13434-48945-232
num1 = re.sub('\d','',num) # 刪除減號
print('num1 is : ',num1)
>>>num1 is : 1343448945232
# 以字母下劃線開頭,以數字結尾的正規表示式
import re
p = re.compile('^[a-za-z_].*\d$')
p.findall('_ac12300')
>>>['_ac12300']
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...