Re正規表示式

2021-10-08 10:19:20 字數 3642 閱讀 8011

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.符號 的方式作為引數加入到函...