- . : 匹配除換行符意外的任意字元
- [abc]: 字元集合,一次只能匹配乙個字元,匹配a、b、c
- [^abc]: 字元集合,不是a/b/c
- [a-z]: 小寫字元
- [^a-z]: 不是小寫
- \b: 單詞邊界
- \b: 不匹配單詞邊界
- \d: [0-9]匹配1個數字
- \d: [^0-9]不匹配1個數字
- \s: 匹配乙個空白字元.包括製表符、換行符、空格
- \s: 非空白字元
- \w: 匹配[0-9a-za-z],包括中文
- \w: w之外的字元
使用 \ 轉義,反斜槓本身\
\r \n 轉義後代表回車、換行
- * 0次或者多次
- + 至少一次
- ? 表示前面的正規表示式重複0次或者1次
- 重複固定的n次
- 至少重複n次
- 重複n到m次;
x|y 匹配x或者y; \b(a|b)\w+ 以a或者b開頭的單詞
捕獲/分組(pattern): 捕獲或會自動分配組號,自動從1開始,0表示捕獲的全長
\數字 匹配對應的分組,剛好取到前面匹配到的內容;
(?:pattern) 不**獲,不要分組,保留『或』;\b(?:a|b)\w+
(?exp) 通過name訪問分組、python語法:(?pexp)
判斷一件事一定發生、一定不發生,一定是一定不是
(?=exp) f(?=oo) f後面一定有oo出現;
(?<=exp) (?<=f)ood ood前面一定在前面有t
(?!exp) 一定沒有
(?常量
re.multiline | re.dotall | re.ignorecase
方法# 編譯、提高匹配效率
re.compile(pattern,flags=0)
# 單次匹配match
re.match(battern,string,flags=0) # 未編譯
regex.match(string,flags) # 已編譯
s = '1234abcd'
regex = re.compile('[ab]')
matcher = regex.match(s,4)
print(matcher)
-----
# 一直匹配search
re.compile(pattern,flags=0)
re.search()
regex.search()
# 全部匹配
# findall() 從左至右
matcher = regex.findall(s)
# finditer() 惰性求值
# 匹配替換
re.sub( )
regex.sub()
reget.subn(replacement ,string,count=0)
replacement 為bytes或者function;
s = "hello tom"
regex = re.compile('t\wm')
print(regex.sub("mageud.com",s,1))
# 分割字串
re.split(pattern,string,maxsplit=0,flags=0)
s='''01 one
02 two
03 three'''
regex = re.split('[\s\d]+')
# 分組
group(n) 0是返回整個匹配的字串
group('name') 命名分組
groups 所有的分組
groupdict() 返回所有命名的分組
# 練習
1. 匹配郵箱
^\w[\w\.-]*@\w[\w\-\.]*\.[a-z]
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
Python正規表示式總結
基礎匹配 d 可以匹配乙個數字,00 d 可以匹配 007 w 可以匹配乙個字母或者數字,00 w 可以匹配 007 或者 00a s 可以匹配乙個空格 可以匹配任意字元 匹配變長的字元,可以用 表示任意個字元 包括0個 用 表示至少乙個字元,用?表示0個或者1個字元,用表示n個字元,用表示n m個...
正規表示式總結
正規表示式用於操作字串的規則,這些規則由一些符號所組成。使用正規表示式可以進行更複雜的操作,而且這種複雜的操作要比方法短的多。功能 1,匹配。使用的是string類中的matches方法。2,切割。使用的string類split方法。3,替換。4,查詢。1,將正則規則通過pattern類中的stat...