正規表示式
在我看來是提供乙個模板,將待匹配的字串與模板匹配,匹配不到則返回為空,匹配成功根據需要返回匹配的字串。
正規表示式比字串本身的功能要強一點,當然效能上略有不如。
我們使用正規表示式主要有兩種目的,
>
是否包含模板字串;
> 得到匹配字串。
python 中使用正規表示式時需要引入「re」模組,為了避免記憶上的混亂,本文只記載一種最常用的使用正規表示式的方式。
1#encoding:utf-823
#引入re模組
4importre5
6#生成正規表示式模板
7 pat = re.compile(r'12'
)89#
匹配結果
10 m=pat.search("
123 12")
11printm12
13#匹配結果
14 m=pat.search("
3 2")15
printm16
17#輸出:18
#<_sre.sre_match object at 0x01fcfb48>19#
none
在一些示例中,在匹配結果也會用到match方法,match和search的區別如下:
match :只從字串的開始與正規表示式匹配,匹配成功返回matchobject,否則返回none;
search :將字串的所有字串嘗試與正規表示式匹配,如果所有的字串都沒有匹配成功,返回none,否則返回matchobject;
示例如下:
pat = re.compile(r'12')m=pat.search("
312"
)printm#
<_sre.sre_match object at 0x01fcfb48>
m=pat.match("
312"
)printm#
none
m=pat.match("
123"
)printm#
<_sre.sre_match object at 0x01fcfb48>
pat = re.compile(r'href="([^"]*)"')
s = '
起點中文
'm =pat.search(s)
m.group(0)
#href="
print m.group(1)
#
「()」表示我們想要提取的字串內容,用group()函式方法取得,group(0) 取得匹配的字串,group(1)取得第乙個分組。
當要取得所有符合規則的字串時我們可使用findall()方法
pat = re.compile(r'href="([^"]*)"')
s = '
起點中文
起點中文
'm =pat.findall(s)
printm#
['', '']
此時若匹配返回的結果是乙個list。
pat=re.compile(r'href="([^"]*)"')
正則裡面有個『r』是原生字串的意思,它表示不轉義,例如:
path="c:\noway
path#c:
#oway
path=r"
c:\noway
path
#c:\noway
正規表示式用」\\」表示反斜槓符號,因此當要匹配字串中的「\\」時需要用「\\\\」,前兩個表示乙個反斜槓即轉義字元,後兩個表示真正的反斜槓。當加上字首r時,就只用「\\」匹配反斜槓。
示例如下:
re_str_patt = "\\\\
"reobj =re.compile(re_str_patt)
str_test = "
abc\\cd\\hh
reobj.findall(str_test)
#['\\', '\\']
r_str_patt = r"\\"
reobj.findall(str_test)
#['\\', '\\']
Python之正規表示式
正規表示式正規表示式主要用來匹配字串,例如 判斷乙個字串是否是乙個合法的 思想是用描述性的語言給字串乙個規則。re模組中的match函式提供了這種功能,若匹配成功則返回匹配物件,否則返回none。一 語法 d 表示匹配數字 w 表示匹配字母或數字 可以匹配任意字元 s可以匹配乙個空格或者tab 特殊...
Python之正規表示式
正規表示式元字元如下 匹配除換行符以外的所以字元 規定匹配模式必須出現在目標字串的開頭,例如 hell hello hellboy 規定匹配模式必須出現在目標字串的結尾,例如 ar car bar 其前乙個字元必須在目標物件中連續出現零次或多次 其前乙個字元必須在目標物件中連續出現一次或多次 其前乙...
Python之正規表示式
匯入re模組 檢索和替換 re.sub re.sub pattern,repl,string,count 0,flags 0 pattern 正則中的模式字串 repl 替換的字串,也可為乙個函式 string 要被查詢替換的原始字串 count 模式匹配後替換的最大次數,預設 0 表示替換所有的匹...