import re # 匯入re模組
重複出現的字串
對於重複出現的字串可以用大括號內部加上重複次數的方式表達
r'\d'
分組
使用小括號分組
r'(\d)-(\d)'
重複出現的字串
對於重複出現的字串可以用大括號內部加上重複次數的方式表達
r'\d'
重複出現的字串
對於重複出現的字串可以用大括號內部加上重複次數的方式表達
r'\d'
重複出現的字串
對於重複出現的字串可以用大括號內部加上重複次數的方式表達
r'\d'
# 使用小括號分組
r'(\d)-(\d)'
# |(pipe)在正則表示法中稱為管道,使用管道時可以同時查詢比對多個字串
r'\d|b'
# 在正規表示式中若是
# 某些括號內的字串或正規表示式可有可無,
# 執行查詢時都算成功,例如,na字串可有可無,表達方式是(na)?
# # 在正規表示式中若是某些字串
# 或正規表示式可為0到多次,
# 執行查詢時都算成功,例如,
# na字串可為0到多次,表達方式是(na)*。
# 在正規表示式中若是某些字
# 符串或正規表示式可為1到多次,執行查
# 找時都算成功,例如,na字串可為1到
# 多次,表達方式是(na)+。
# r'a' = r'a|a|a'
# 使用大括號時,也可以省略第乙個或第二個數字
# ,這相當於不設定最小或最大重複次數。
# 例如,a代表重複3次以上都符合,a代表重複10次以下都符合
# a 在用 search() 時預設return重複最多的字串,這是python的預設模式,這
# 種模式又稱為貪婪(greedy)模式。另一種是列出重複最少的字串,
# 這稱為非貪婪模式,方法是在正規表示式的查詢模式右邊增加?符號。
# a?
# python可以使用中括號來設定字元,可參考下列範例。
# [a-z]:代表a~z的小寫字元。
# [a-z]:代表a~z的大寫字元。
# [aeiouaeiou]:代表英文發音的母音字元。
# [2-5]:代表2~5的數字。
# [2-5.]會查詢2~5的數字和句點
# 字元的處理中,如果在中括號內的左方加上^字元,意義是查詢不在這些字元內的所有字元。
# 在正則表示法中起始位置加上^字元,表示是正則表示法的字串必須出現在被查詢字串的起始位置,如果查詢成功才算成功。
# 正則表示法的末端放置'$'字元時,表示是正則表示法的字串必須出現在被查詢字串的最後位置,如果查詢成功才算成功。
# 萬用字元(wildcard)「.」表示可以查詢除了換行字元以外的所有字元,但是只限定乙個字元。
# 如果查詢的是真正的「.」字元,必須使用反斜槓「\.」。
re
使用re.compile( )建立regex物件
ob = re.compile(r'\d\d\d\d')
使用isdecimal( )方法判斷字元是否為0~9的數字
# 使用search( )只返回第乙個發現的字串
m = ob.findall(msg)
# 用列表方式返回所有現字串
m.group(
)# 返回比對符合的字串
# 可以省略使用re.compile( )直接將比對模式放在各自的引數內
re.search(pattern,string,flags)
re.findall(pattern,string,flags)
查詢時若是在search( )或findall( )內增加第三個引數re.i或re.ignorecase,查詢時就會忽略大小寫,
# 可以使用group( )返回比對符合的不同分組
# ,例如,group()或group(0)返回第乙個比對相符的文字,
# group(1)則返回括號的第一組文字,
# group(2)則返回括號的第二組文字。
# groups()取得各個分組的內容
re.findall(m,
'bb5n4n4mb644nma a'
)
re模組的另乙個方法是re.match( ),這個方法其實和re.search( )相同,差異是re.match( )是只查詢比對字串開始的字,如果失敗就算失敗。re.search( )則是查詢整個字串。至於re.match( )查詢成功會返回matchobject物件,若是查詢失敗會返回none,這部分與re.search( )相同。
matchobject方法:
# 用「.*」查詢時碰上換行字元,查詢就停止。python的re模組提供引數re.dotall,功能是查詢時包括換行字元,可以將此引數放在search( )、findall( )或compile()。
python re模組內的sub( )方法可以用新的字串取代原本字串的內容。
pattern是要查詢的字串,如果查詢成功則用newstr取代,同時成功取代的結果返回給result變數,如果查詢到多個相同字串,這些字串將全部被取代,需留意原先msg內容將不會改變。如果查詢失敗則將msg內容返回給result變數,當然msg內容也不會改變。
# 如果想在正規表示式中加上注釋,必須配合使用re.verbose引數,然後將此引數放在search( )
# 、findall( )或
# compile( )中。
r'''
\d| # 數字
\d # 其他字元
'''
re.ignorecase,re.dotall,re.verbose引數,
可以分別在re.search( )、re.findall( )、re.match( )或是re.compile( )方法內使用它們,
可是一次只能放置乙個引數,如果想要一次放置多個引數,應如何處理?
方法是使用管道|
電子郵件位址的pattern。
試一下手咯
正規表示式 RE
最近一段時間在研究nginx的rewirte重寫機制,因此對re需要有一定的了解,看了想關的文章,因此自己來寫一篇類似總結性的的文章。基本來說,正規表示式是一種用來描述一定數量文字的模式。regex regular express。本文用 regex 來表示一段具體的正規表示式。一段文字就是最基本的...
re正規表示式
1.數字 0 9 2.n位的數字 d 3.至少n位的數字 d 4.m n位的數字 d 5.零和非零開頭的數字 0 1 9 0 9 6.非零開頭的最多帶兩位小數的數字 1 9 0 9 0 9 7.帶1 2位小數的正數或負數 d d 8.正數 負數 和小數 d d 9.有兩位小數的正實數 0 9 0 9...
re正規表示式
原子表 xyz abc,其中x,y,z是平行關係,即xabc,yabc,zabc都可以是匹配結果 表示除了中括號內的元素以外都能匹配 任意匹配元字元 邊界限制元字元 限定符 模式選擇符 a b時a和b都可以作為匹配模式 模式單元符 將一些原子組合成大原子使用 使用 re.符號 的方式作為引數加入到函...