常用的正則表達式符號
1 '.' # 默認匹配換行符(\n)之外的任意一個字符;flags=re.DOTALL(將換行符也匹配出來)
2 '^' # 匹配字符串開頭洒忧;flags=re.MULTILINE(如果開頭為換行符或者其他特殊,可以從換行符后面開始匹配)
3 '$' #匹配字符串結(jié)尾够颠;flags=re.MULTILINE(如果字符串有換行符的話換行符前的字符也可以在行尾匹配)
4 '*' #匹配*號前面的字符0次或者多次[0, +oo]
5 '+' #匹配前一個字符1次或者多次[1, +oo]
6 '?' #匹配前一個字符1次或者0次
7 '{m}' #匹配前一個字符m次
8 '{n, m}' #匹配前一個字符n到m次
9 '|' #匹配|左邊或者|右邊的字符
10 '(...)' #匹配括號中的任意正則表達式
包含'\'的正則表達式特殊序列
\d #匹配任何十進制數(shù):它相當于類[0-9]
\D #匹配任何非數(shù)字字符:它相當于[^0-9]
\s #匹配任何空白字符:它相當于類[ \t\n\r\f\v]
\S #匹配任何非空白字符:它相當于類[^ \t\n\r\f\v]
\w #匹配任何字母數(shù)字字符:它相當于類[a-zA-Z0-9]
\W #匹配任何非數(shù)字字母字符:它相當于[^a-zA-Z0-9]
\b #匹配一個單詞邊界熙侍,也就是指單詞和空格間的位置
常用的語法
import re #放在文件頭以下省略
re.findall #把所有匹配的字符以元素的形式放入列表,返回一個列表
print(re.findall('^a', '\nabc')) #[]
print(re.findall('^a', '\nabc', flags=re.MULTILINE)) #['a']
print(re.findall('.', '\nabc')) #['a', 'b', 'c']
print(re.findall('.', '\nabc', flags=re.DOTALL)) #['\n', 'a', 'b', 'c']
re.search #查找字符串中于正則表達式匹配的第一個位置履磨,返回相應的MatchObject實例,后綴 .group() 方法可以取得相應的str型值
print(re.search('a', '\nabdgc ddaad')) #<re.Match object; span=(1, 2), match='a'>
print(re.search('a', '\nabdgc ddaad').group()) #a #直接以字符出返回
re.sub #將匹配到的字符替換
print(re.sub('正則表達式', '用來替代的字符串', '字符串')) #返回替換后的字符串
print(re.sub('.', 'a', '\nabdgc ddaad')) #aaaaaaaaaaa
re.split #將匹配到的字符當做列表分隔符蛉抓,將分隔開的元素放在列表中返回
print(re.split('abc', 'sldkleabcdklsabcd')) #['sldkle', 'dkls', 'd']
re.match #只在字符串開頭位置開始匹配,返回MatchObject實例,使用.group()獲取值
print(re.match('abc', 'sldkleabcdklsabcd')) #None #匹配不到返回None
print(re.match('abc', 'abcabcsldkledklsabcd')) #<re.Match object; span=(0, 3), match='abc'>
print(re.match('abc', 'abcabcsldkledklsabcd').group()) #abc
#*,+,?都是貪婪匹配剃诅,也就是盡可能的匹配 后面加巷送?使其變成惰性匹配
轉(zhuǎn)義字符反斜杠
# \ :反斜杠后邊跟元字符去除特殊功能
# 反斜杠后面跟普通字符實現(xiàn)特殊功能(某些普通字符d、w矛辕、等)
# 在編程中想要匹配字符串中的'\'需要四個反斜杠'\\\\'因為編程語言將四個反斜杠變?yōu)閮蓚€笑跛,而正則表達式使用兩個反斜杠來匹配這一個反斜杠
import re
print(re.findall('\\\\', 'sdas\dadas')) #['\\'] #這里輸出編程語言兩個反斜杠相當于字符串中一個斜杠
上面等價于
print(re.findall(r'\\', 'sdas\dadas')) #['\\'] #原生字符串
python自學技術(shù)互助扣扣群:670402334