1. 程式人生 > 其它 >Python正則表示式-常用函式的基本使用

Python正則表示式-常用函式的基本使用

常用函式有

re.match()、re.search() 、re.sub()、compile()、findall()、finditer()、split()

re.match() 匹配字串開頭,常用來判斷資料是否滿足我的正則要求。

成功返回一個match物件,不成功返回空。

>>> import re
>>> rc = re.compile(r"www.+")
>>> rc.match('www.com wxw.cn')
<re.Match object; span=(0, 14), match='www.com wxw.cn'>
>>> rc.match('wxw.cn www.com')
>>>

re.search() 匹配整個字串,判斷資料時候包含我的正則資料

>>> rc.search('wxw.cn www.com')
<re.Match object; span=(7, 14), match='www.com'>
>>> rc.search('wxw.cn www.com wxw.org www.cn')
<re.Match object; span=(7, 29), match='www.com wxw.org www.cn'>
>>>

作比較

import re

st = 'Monday Tuesday Wednesday Thursday Friday Saturday Sunday'
rc = r'sunday'

#match 進行匹配
rcm = re.match(rc,st,re.I)
#re.I忽略大小寫
if rcm:
    print(rcm.group())
else:
    print("match don't is Sunday")

#search 進行匹配查詢
rcs = re.search(r'sunday',st,re.I)
if rcs:
    print(rcs.group())
else:
    print("search don't is Sunday")

re.sub() 檢索和替換

import re

#re.sub(pattern, repl, string, count=0, flags=0)

st = '這#是#一#個#很*寂*寞*的#天#,#下#著#有#些#傷@心@的@雨@'

#將這個字串裡的特殊符號替換成空,也就是刪掉的意思。
#定義正則
pat = r'[#\*@]'

music = re.sub(pat,'',st)
print(music)
import re

#re.sub(pattern, repl, string, count=0, flags=0)

#repl 也可以是一個函式

str ='主機板 cpu computer 電池 mouse 鍵盤'
pat = r'[a-z]'
#將str中的小寫英文字母全都轉換為大寫

def chupper(matched):
    value = matched.group()
    return value.upper()

res = re.sub(pat,chupper,str)
print(res)

compile 函式用於編譯正則表示式,生成一個正則表示式( Pattern )物件,供 match() 和 search() 這兩個函式使用。

'''
Python大型免費公開課,適合初學者入門
加群:579817333 獲取學習資料及必備軟體。
'''
>>> import re
>>> pac = re.compile('[a-z]',re.I)
>>> st = 'A1b2c3d4e5f7g8h9i0g1k2l3m4n5'
>>> m = pac.match(st)
>>> m
<re.Match object; span=(0, 1), match='A'>
>>> m.group()
'A'
>>> m.start()
0
>>> m.end()
1
>>> m.span()
(0, 1)
>>>

findall

在字串中找到正則表示式所匹配的所有子串,並返回一個列表,如果沒有找到匹配的,則返回空列表。

注意: match 和 search 是匹配一次 findall 匹配所有。

findall(string[, pos[, endpos]])

re.finditer

和 findall 類似,在字串中找到正則表示式所匹配的所有子串,並把它們作為一個迭代器返回。

>>> rec = re.compile(r'\D')
>>> iters = rec.finditer('abcd1234efg567hig')
>>> for value in iters:
    print(value.group(),end="")

abcdefghig
>>>

split 方法按照能夠匹配的子串將字串分割後返回列表,它的使用形式如下:

re.split(pattern, string[, maxsplit=0, flags=0])

>>> rec = re.compile(r'[.]')
>>> st = '192.168.1.1'
>>> recs = rec.split(st)
>>>
>>> recs
['192', '168', '1', '1']
>>>

flags:

修飾符 描述
re.I 使匹配對大小寫不敏感
re.L 做本地化識別(locale-aware)匹配
re.M 多行匹配,影響 ^ 和 $
re.S 使 . 匹配包括換行在內的所有字元
re.U 根據Unicode字符集解析字元。這個標誌影響 \w, \W, \b, \B.
re.X 該標誌通過給予你更靈活的格式以便你將正則表示式寫得更易於理解。