常用的正则表达式符号

1 '.' # 默认匹配换行符(\n)之外的任意一个字符;flags=re.DOTALL(将换行符也匹配出来)

2 '^' # 匹配字符串开头;flags=re.MULTILINE(如果开头为换行符或者其他特殊,可以从换行符后面开始匹配)

3 '$' #匹配字符串结尾;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 #匹配任何十进制数:它相当于类[0-9]

\D #匹配任何非数字字符:它相当于[^0-9]

\s #匹配任何空白字符:它相当于类[ \t\n\r\f\v]

\S #匹配任何非空白字符:它相当于类[^ \t\n\r\f\v]

\w #匹配任何字母数字字符:它相当于类[a-zA-Z0-9]

\W #匹配任何非数字字母字符:它相当于[^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')) #

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')) #

print(re.match('abc', 'abcabcsldkledklsabcd').group()) #abc

#*,+,?都是贪婪匹配,也就是尽可能的匹配 后面加?使其变成惰性匹配

转义字符反斜杠

# \ :反斜杠后边跟元字符去除特殊功能

# 反斜杠后面跟普通字符实现特殊功能(某些普通字符d、w、等)

# 在编程中想要匹配字符串中的'\'需要四个反斜杠'\\\\'因为编程语言将四个反斜杠变为两个,而正则表达式使用两个反斜杠来匹配这一个反斜杠

import re

print(re.findall('\\\\', 'sdas\dadas')) #['\\'] #这里输出编程语言两个反斜杠相当于字符串中一个斜杠

上面等价于

print(re.findall(r'\\', 'sdas\dadas')) #['\\'] #原生字符串