1、正则表达式模式:

(1)单个字符

  • \\ : 表示转义字符'\'
  • \t : 匹配制表符
  • \n:匹配换行符
  • \r:匹配回车符

(2)字符集

  • [a,b,c]:其中的任意一位。
  • [^a,b,c]:表示不是其中的任意一位。
  • [a-z]:所有的小写字母。
  • [a-zA-Z]:表示任意的一位字母,不区分大小写。
  • [0-9]:表示任意的一位数字。

(3)字符集等价表达式:

  • . :表示任意的一位字符。
  • \d:等价于[0-9],属于简化写法。
  • \D:等价于[^0-9],属于简化写法。
  • \s:表示任意的空白字符,例如\t,\n。
  • \S:表示任意的非空白字符。
  • \w:等价于[a-zA-Z_0-9],表示任意的字母,数字,下划线所组成。
  • \W:等价于[^a-zA-Z_0-9],表示不是由任意的字母,数字,下划线所组成。

(4)边界匹配

  • ^ : 正则匹配的开始
  • $:正则匹配的结束

\b,\B是单词边界,不匹配任何实际字符,所以是看不到的;\B是\b的非(补)。

\b:表示字母数字与非字母数字的边界,     非字母数字与字母数字的边界。

\B:表示字母数字与(非非)字母数字的边界,非字母数字与非字母数字的边界。

(5)正则出现数量

  • 正则?:表示此正则可以出现0次或者1次。
  • 正则+:表示此正则可以出现1此或者多次。
  • 正则*:表示此正则可以出现0次或者1次或者多次。
  • 正则{n}:表示此正则正好出现n次。
  • 正则{n,}:表示此正则至少出现n次。
  • 正则{n,m}:表示此正则出现n~m次。

(6)正则逻辑运算

  • 正则1正则2:正则1判断后继续判断正则2。
  • 正则1 | 正则2:正则1或者正则2有一组满足即可。
  • (正则):将多个正则作为一组,可以为这一组设置单独出现的次数。

2、python中的正则表达式

python中的re模块拥有全部的正则表达式功能,可以更加方便的对字符串进行操作。

  • re.compile(pattern[, flags]) 编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。

参数:

pattern : 一个字符串形式的正则表达式

flags :  用于控制正则表达式的匹配方式,一个可选参数,比如忽略大小写,多行模式等,具体参数为:

  • re.match(pattern,string,flags=0) 从字符串的起始位置匹配一个模式,如果不是从起始位置匹配成功的话,返回none。

参数:

pattern :匹配的正则表达式;

string :需要匹配的字符串;

flags : 用于控制正则表达式的匹配方式。

使用group(num=0)和groups():匹配对象函数来获取匹配表达式。

group(num=0):匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。

groups(): 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号

  • re.serach(pattern,string,flags=0):扫描整个字符串并返回第一个成功匹配的字符串。

参数:

pattern :匹配的正则表达式;

string :需要匹配的字符串;

flags : 用于控制正则表达式的匹配方式。

同样,也可以使用group(num=0)和groups():匹配对象函数来获取匹配表达式。

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

  • re.sub(pattern, repl, string, count=0, flags=0)  替换字符串中的匹配项

参数:

pattern : 正则中的模式字符串。

repl : 替换的字符串,也可为一个函数。

string : 要被查找替换的原始字符串。

count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。

flags : 用于控制正则表达式的匹配方式。

  • findall(string[, pos[, endpos]]) 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表

参数:

string : 待匹配的字符串。

pos : 可选参数,指定字符串的起始位置,默认为 0。

endpos : 可选参数,指定字符串的结束位置,默认为字符串的长度

  • re.finditer(pattern, string, flags=0):匹配子串并作为迭代器返回

参数:

pattern :匹配的正则表达式;

string :需要匹配的字符串;

flags : 用于控制正则表达式的匹配方式。

  • re.split(pattern, string[, maxsplit=0, flags=0])  按照能够匹配的子串将字符串分割后返回列表

参数:

pattern :匹配的正则表达式;

string :需要匹配的字符串;

maxsplit:可选参数,分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。

flags:可选参数,用于控制正则表达式的匹配方式。

3、正则表达式匹配标志-用来控制匹配的模式

re.I: 忽略大小写

re.L: 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境

re.M: 多行模式,可影响到^和$

re.S:即为 . 并且包括换行符在内的任意字符(. 不包括换行符)

re.U: 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库

re.X: 为了增加可读性,忽略空格和 # 后面的注释

4、正则表达式对象:

re.RegexObject

re.compile(): 返回 RegexObject 对象。

re.MatchObject

group() 返回被 RE 匹配的字符串。

start() 返回匹配开始的位置

end() 返回匹配结束的位置

span() 返回一个元组包含匹配 (开始,结束) 的位置