常用正規表示式
. :匹配任意乙個字元
^ :匹配以什麼開頭的字元,如果放在中括號中表示取反,如 ^abc 表示匹配以 abc 開頭的字元,[^abc] 表示匹配 abc 之外的字元
:匹配以什麼結尾的字元*:匹配零個或多個星號前面的字元,如可以匹配、、、等等如可以匹配、、、等等,如abc?只能匹配ab、abc :用於轉義,比如我要匹配 這個字元,但是用於匹配以什麼結尾的字元,因此我就可以用來匹配用於匹配以什麼結尾的字元,因此我就可以用$來匹配 這個字元
| :表示'或者',比如 ab|cd 可以匹配 'ab' 或 'cd'
{} :匹配指定個花括號前面的字元,如 ab 可以匹配 abb ,也可以是乙個範圍,如 ab 可以匹配 ab 、abb 、abbb 、abbbb
:匹配中括號中的任意乙個字元,如 [0-9] 表示匹配 0~9 中的任意乙個數字
() :如果用括號括起來表示乙個整體,如 (ab) 把 ab 當成乙個整體,只能匹配 abab ,另外還有(?p....) 的形式,我們
知道用括號括起來的表示乙個整體,比如 (abcdefg) 是乙個整體,但如果括號裡面的內容很長很長,那麼我們訪問這個整體的時候
是通過給這個整體取個別名的方式,即 (?p....) 的方式,如 (?p(abcdefg)) 表示把 (abcdefg) 這個整體取個別名 a ,
當我們訪問的時候訪問 a 就相當於訪問 (abcdefg) ,在正則中這通常稱為分組
\d :匹配任何數字,相當於 [0-9]
\d :匹配非數字字元,相當於 [^0-9]
\s :匹配任何空白字元,如空格、tab製表符、換行符等
\s :匹配任何非空白字元
\w :匹配所有的字母和數字,相當於 [a-za-z0-9]
\w :匹配所有的非字母和數字,相當於[^a-za-z0-9]
re正則物件和正則匹配效率比較
re.findall() :用於從乙個字串中匹配指定的字元
findall(string[, pos[, endpos]])
搜尋string,以列表形式返回全部能匹配的子串
import re
p1 = re.compile(r'\d+')
a_str = 'one1two222three33four4'
#正則物件的split方法,使用正則匹配進行分割字串
#最後是以列表的形式返回
print(p1.split(a_str))
#正則物件的findall方法,來查詢符合物件的子字串
#最後是以列表的形式返回
print(p1.findall(a_str))
#finditer 每個返回值都是是乙個物件,用group()方法檢視,
for i in p1.finditer(a_str):
print(i.group())
sub方法
sub(repl, string[, count])
使用repl替換string中每乙個匹配的子串後返回替換後的字串。
當repl是乙個字串時,可以使用\id或\g、\g引用分組,但不能使用編號0。
當repl是乙個方法時,這個方法應當只接受乙個引數(match物件),並返回乙個字串用於替換(返回的字串中不能再引用分組)。
count用於指定最多替換次數,不指定時全部替換。
import re
p = re.compile(r'(\w+) (\w+)')
s = 'i say,hello word!'
print(p.sub(r'\2 \1',s))
def func(m):
return m.group(1).title() + ' ' +m.group(2).title()
print(p.sub(func,s)
match匹配物件
match物件是一次匹配的結果,包含了很多關於此次匹配的資訊,可以使用match提供的可讀屬性或方法來獲取這些資訊。上面的過程中多次使用了match物件,呼叫了他的group()和groups()等方法。
import re
prog = re.compile(r'(?pabc)(\w*)(?p=tagname)')
result = prog.match('abclfjlad234sjldabc')
# finiter 迭代以後每個物件都是乙個matche物件
print(dir(result)) #檢視match方法
print(result.group()) #group方法
print(result.groups())
print(result.group(2))
print(result.group(1))
print('####'*10 + 'tagname' + '####'*10)
print(result.group('tagname'))
#matche物件的group返回乙個元組,下標是以1開頭
print(result.groupdict())
python正規表示式元字元 正規表示式
字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...
Python 正規表示式
1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...
Python正規表示式
學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...