正則運算式(Regular Expression)是一種文本模式,包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為"元字符"),
正則運算式使用單個字串來描述、匹配一系列匹配某個句法規則的字串,
正則運算式是一個特殊的字符序列,它能幫助你方便的檢查一個字串是否與某種模式匹配,
正則運算式是繁瑣的,但它是強大的,學會之后的應用會讓你除了提高效率外,會給你帶來絕對的成就感,
在Ptrhon中re模塊使Python語言擁有全部的正則運算式功能,
re.match函式
re.match 嘗試從字串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就回傳none,成功回傳一個MatchObject,
函式語法:
re.match(pattern, string, flags=0)
實體代碼:
>>> print(re.match('abc', '123abc'))
None
>>> re.match('abc', 'abc')
<re.Match object; span=(0, 3), match='abc'>
>>> re.match('a.c', 'abc')
<re.Match object; span=(0, 3), match='abc'>
>>> re.match('a\.c', 'a.c')
<re.Match object; span=(0, 3), match='a.c'>
>>> re.match('a\*c', 'a*c')
<re.Match object; span=(0, 3), match='a*c'>
re.search方法
re.search 掃描整個字串并回傳第一個成功的匹配,
函式語法:
re.search(pattern, string, flags=0)
實體代碼:
>>> re.search('abc', 'abc')
<re.Match object; span=(0, 3), match='123abc'>
>>> re.search('a.c', 'abc')
<re.Match object; span=(0, 3), match='123abc'>
>>> re.search('a\.c', 'a.c')
<re.Match object; span=(0, 3), match='123a.c'>
>>> re.search('a\*c', 'a*c')
<re.Match object; span=(0, 3), match='123a*c'>
re.match與re.search的區別
re.match只匹配字串的開始,如果字串開始不符合正則運算式,則匹配失敗,函式回傳None;而re.search匹配整個字串,直到找到一個匹配,
re.compile函式
compile 函式用于編譯正則運算式,生成一個正則運算式( Pattern )物件,供 match() 和 search() 這兩個函式使用,
語法格式為:
re.compile(pattern[, flags])
引數:
pattern : 一個字串形式的正則運算式
flags : 可選,表示匹配模式,比如忽略大小寫,多行模式等,具體引數為:
| 修飾符 | 描述 |
|---|---|
| re.I | 使匹配對大小寫不敏感 |
| re.L | 做本地化識別(locale-aware)匹配 |
| re.M | 多行匹配,影響 ^ 和 $ |
| re.S | 使 . 匹配包括換行在內的所有字符 |
| re.U | 根據Unicode字符集決議字符,這個標志影響 \w, \W, \b, \B. |
| re.X | 該標志通過給予你更靈活的格式以便你將正則運算式寫得更易于理解, |
正則運算式可以包含一些可選標志修飾符來控制匹配的模式,修飾符被指定為一個可選的標志,多個標志可以通過按位 OR(|) 它們來指定,如 re.I | re.M 被設定成 I 和 M 標志,
>>>#查找所有的數字
>>> regex=re.compile(r'\d+')
>>> regex.findall('12abc56py7hello')
['12', '56', '7']
>>>
>>>##查找有wh的單詞,不區分大小寫
>>> re.findall(r'\w*wh\w*','Who are you, what your name, when you go home', re.I)
['Who', 'what', 'when']
>>> #等價于上面的
>>> regex=re.compile(r'\w*wh\w*', re.I)
>>> regex.findall('Who are you, what your name, when you go home')
['Who', 'what', 'when']
>>>
正則運算式物件
re.RegexObject
re.compile() 回傳 RegexObject 物件,
re.MatchObject
group() 回傳被 RE 匹配的字串,
start() 回傳匹配開始的位置
end() 回傳匹配結束的位置
span() 回傳一個元組包含匹配 (開始,結束) 的位置
正則運算式模式
模式字串使用特殊的語法來表示一個正則運算式:
字母和數字表示他們自身,一個正則運算式模式中的字母和數字匹配同樣的字串,
多數字母和數字前加一個反斜杠時會擁有不同的含義,
標點符號只有被轉義時才匹配自身,否則它們表示特殊的含義,
反斜杠本身需要使用反斜杠轉義,
由于正則運算式通常都包含反斜杠,所以你最好使用原始字串來表示它們,模式元素(如 r'\t',等價于 '\t')匹配相應的特殊字符,
下表列出了正則運算式模式語法中的特殊元素,如果你使用模式的同時提供了可選的標志引數,某些模式元素的含義會改變,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/228059.html
標籤:其他
