正则表达式是由普通字符及特殊字符(称为元字符)组成的文字模式,元字符(包含特殊含义,如果要作为普通字符使用,则需要转义)包括:. ^ $ + ? { } [ ] \ | ( ) 。例如:
"Go" # 匹配字符串"Good Good"中的"Go" "G.d" #匹配字符串"Good Good"中的"God", . 为元字符,匹配除行终止符外的任何字符 "d $" #匹配字符串"Good Good"中的最后一个"d",$ 为元字符,匹配结尾
python的re模块实现了正则表达式处理的功能。导入re模块后,使用findall、search函数可以进行匹配:
re.findall(pattern,string): 返回匹配结果列表
re.search(pattern,string):如果匹配,返回Match对象,否则返回None。
例如:
>>> import re #导入re模块 >>> re.findall(‘d‘,‘godness‘) [‘d‘]
正则表达式中包含你特殊字符,例如: \b表示单词边界;而字符串中的转义字符 \b 表示退格字符。因此在正则表达式中,这些与标准转义字符重复的特殊符号必须使用两个反斜线字符(‘\\‘),或者使用原始字符串(r" ") 或 (r‘ ‘)。
>>> re.findall("\bon\b","only on air") [] >>> re.findall("\\bon\\b","only on air") [‘on‘] >>> re.findall(r"\bon\b","only on air") [‘on‘]
字符类是由一对方括号[ ]括起来的字符集合,正则表达式引擎匹配字符集中的任意一个字符。字符类的定义方式包括以下几种。
[xyz]:枚举字符集,匹配括号中的任意字符。例如,“t[aeio]n”匹配“tan”、"ten"、"tin"、"ton"。
[^xyz]:否定枚举字符集,匹配不在此括号中的任意字符。
[a-z]:指定范围的字符,匹配指定范围的任意匹配。
[^a-z]:指定范围以外的字符,匹配指定范围以外的任意字符。
例如: >>> re.findall("fo[xr]","the quick brown fox jumps for food") [‘fox‘, ‘for‘]
常用的预定义字符类
预定义字符 | 说明 |
. | 除行终止符外的任何字符 |
\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] |