正規表示式元字元如下:. ^ $ * + ? [ ] \ | ( )
. 匹配除換行符以外的所以字元
^ 規定匹配模式必須出現在目標字串的開頭,例如:^hell hello hellboy
$ 規定匹配模式必須出現在目標字串的結尾,例如:ar$ car bar
* 其前乙個字元必須在目標物件中連續出現零次或多次
+ 其前乙個字元必須在目標物件中連續出現一次或多次
? 其前乙個字元必須在目標物件中連續出現一次或零次
匹配確定的n次,例如:o oo
至少匹配n次,例如:o oo ooo oooo
至少匹配n次,至多匹配m次,例如:o oo ooo
[a-z] a-z內任意乙個大寫字母
[a-z] a-z內任意乙個小寫字母
[0-9] 0-9內任意乙個數字,等價於 \d
[a-za-z0-9] 任意乙個字母或數字,等價於 \w
\ 轉義字元,例如[ ==> [ , \==>\
| 管道符號,a和b是任意的re,那麼a|b就是匹配a或者b的乙個新的re。
\s 用於匹配單個空格,包括tab鍵和換行符
\s 用於匹配單個空格之外的所有字元
\d 匹配0-9的數字
\w 匹配字母、數字或下劃線
\w 匹配所有和\w不匹配的字元
使用正規表示式
re.compile(pattern, flags=0)
編譯正規表示式,返回乙個 pattern 物件。
>>>prog = re.compile(pattern)
>>>result = prog.match(string)
等價於
>>>result = re.match(pattern, string)
第一種方式能實現正規表示式的重用。
re.match(pattern, string, flags=0)
如果字串的開頭能匹配正規表示式,返回對應的 match 物件,否則返回none。
re.search(pattern, string, flags=0)
在字串中查詢,是否能匹配正規表示式,若是,返回對應的 match 物件,否則返回none。
re.split(pattern, string, maxsplit=0, flags=0)
使用正規表示式分離字串。如果用括號將正規表示式括起來,那麼匹配的字串也會被列入到list中返回。maxsplit是分離的次數,maxsplit=1分離一次,預設為0,不限制次數。
>>> p = re.compile(r'\w+')
>>> p2 = re.compile(r'(\w+)')
>>> p.split('this... is a test.')
['this', 'is', 'a', 'test', '']
>>> p2.split('this... is a test.')
['this', '... ', 'is', ' ', 'a', ' ', 'test', '.', '']
re.findall(pattern, string, flags=0)
找到 re 匹配的所有子串,並把它們作為乙個列表返回。如果無匹配,返回空列表。
>>> p = re.compile('\d+')
>>> p.findall('12 drummers drumming, 11 pipers piping, 10 lords a-leaping')
['12', '11', '10']
re.finditer(pattern, string, flags=0)
找到 re 匹配的所有子串,並把它們作為乙個迭代器返回。
>>> p = re.compile('\d+')
>>> iterator = p.finditer('12 drummers drumming, 11 ... 10 ...')
>>> iterator
>>> for match in iterator:
... print(match.span())
...(0, 2)
(22, 24)
(29, 31)
re.sub(pattern, repl, string, count=0, flags=0)
找到 re 匹配的所有子串,並將其用乙個不同的字串替換。可選引數 count 是模式匹配後替換的最大次數;count 必須是非負整數。預設值是 0 表示替換所有的匹配。如果無匹配,字串將會無改變地返回。
group([group1, …])
>>> m = re.match(r"(\w+) (\w+)", "isaac newton, physicist")
>>> m.group(0) # 整個匹配
'isaac newton'
>>> m.group(1) # 第乙個子串
'isaac'
>>> m.group(2) # 第二個子串
'newton'
>>> m.group(1, 2) # 多個子串組成的元組
('isaac', 'newton')
如果有其中有用(?p…)這種語法命名過的子串的話,相應的groupn也可以是名字字串。例如:
>>> m = re.match(r"(?p\w+) (?p\w+)", "malcolm reynolds")
>>> m.group('first_name')
'malcolm'
>>> m.group('last_name')
'reynolds'
groups(default=none)
返回乙個由所有匹配到的子串組成的元組。
>>> m = re.match(r"(\d+)\.(\d+)", "24.1632")
>>> m.groups()
('24', '1632')
default的作用:
>>> m = re.match(r"(\d+)\.?(\d+)?", "24")
>>> m.groups() # 第二個預設是none
('24', none)
>>> m.groups('0') # 現在預設是0了
('24', '0')
Python之正規表示式
正規表示式正規表示式主要用來匹配字串,例如 判斷乙個字串是否是乙個合法的 思想是用描述性的語言給字串乙個規則。re模組中的match函式提供了這種功能,若匹配成功則返回匹配物件,否則返回none。一 語法 d 表示匹配數字 w 表示匹配字母或數字 可以匹配任意字元 s可以匹配乙個空格或者tab 特殊...
Python之正規表示式
匯入re模組 檢索和替換 re.sub re.sub pattern,repl,string,count 0,flags 0 pattern 正則中的模式字串 repl 替換的字串,也可為乙個函式 string 要被查詢替換的原始字串 count 模式匹配後替換的最大次數,預設 0 表示替換所有的匹...
Python之正規表示式
python之正規表示式 1.正規表示式的大致匹配過程是 依次拿出表示式和文字中的字元比較,如果每乙個字元都能匹配,則匹配成功 一旦有匹配不成功的字元則匹配失敗,具體如下圖 1.1 貪婪模式與非貪婪模式 正規表示式通常用於在文字中查詢匹配的字串。python裡數量詞預設是貪婪的 在少數語言裡也可能是...