非打印字符
\cx | 匹配x指明的控制字符;x必须为AZ或az之一,否则c视为‘c’字符 |
\f | 匹配一个换页符, 等价 \x0c 或 、cL |
\n | 匹配一个换行符 , 等价 \x0a 或 \cJ |
\f | 匹配一个回车符, 等价 \x0d 或 \cM |
\s | 匹配空白字符, 包括空格、制表符、换页符等, 等价 [\f\n\r\t\v] |
\S | 匹配非空白字符, 等价 [^\f\n\r\t\v] |
\t | 匹配一个制表符, 等价 \x09 或 \cI |
\b | 匹配一个单词的边界 |
\B | 匹配出现在一个单词中间的模式; 如:\Bthe 匹配任何包含但不以the作为起始的字符串 |
\d | 表示匹配任何十进制数,[0-9] |
\D | 表示匹配任何非十进制数,[^0-9] |
\w | 表示全部字母和数字的字符集,[A-Za-z0-9] |
\W | 表示全部非字母和非数字的字符集,[^A-Za-z0-9] |
\v | 匹配一个垂直制表符 ,等价\x0b 或 \cK; |
在打开文件的时候open(r’c:…’);加r和不加’'r是有区别的;'r’是防止字符转义的
特殊字符
^ 或 \A | 匹配输入字符串的 开始 位置; 在中括号中,表示 非 |
$ 或 \Z | 匹配输入字符串的 结尾 位置 |
. | 匹配除换行符 ‘\n’ 之外的任何 单 字符 |
? | 匹配前面的 子表达式 零次 或 一次, 0~1次 |
* | 匹配前面的 子表达式 零次 或 多次, ≥0次; Kleene闭包 |
+ | 匹配前面的 子表达式 一次 或 多次, ≥1次; 正闭包操作 |
( ) | 标记一个子表达式的开始和结束位置 |
[ ] | 标记一个中括号表达式; 匹配某些特定的字符,只适用于 单 字符 |
{ } | 标记限定符表达式的开始; 表达式内:一个值{N};匹配表达式N次;如 ab{2}c表示abbc 表达式内:一对值{M,N}; 匹配表达式M~N次 |
| | 或 |
\ | 转义符 |
属性信息
flags:正则表达式的匹配方式
re.I , re.IGNORECASE | 不区分大小写的匹配 忽略正则表达式的大小写,[A-Z]能够匹配到小写字符 |
re.L , re.LOCALE | 根据所使用的本地语言环境通过\w, \W, \b, \B, \s, \S实现匹配 |
re.M , re.MULTILINE | ^和$分别匹配目标字符串中行的起始和结束,而不是严格匹配整个字符串本身的起点和结尾 正则表达式中的 ^ 操作能够将给定字符串的每行当做匹配开始 |
re.S , re.DOTTALL | “.”(点号)通过匹配除了\n之外的所有单个字符;该标记表示“."能够匹配全部字符 正则表达式中的 . 操作能够匹配所有字符,默认匹配除换行外的所有字符 |
re.X , re.VERBOSE | 通过反斜线转义后,所有空格加上#(以及在该行中所有后续文字)的内容都被忽略 |
re.U | 匹配Unicode字符 |
re模块
方法 | 内容 |
---|---|
compile(pattern, flags=0) | 使用任何可选的标记来编译正则表达式的模式,然后返回一个正则表达式对象;complie(source, filename, mode[, flags[, don_inherit]]) ; source: 字符串或者AST对象; filename: 代码文件名称,如果不是从文件读取代码,则传递一些可辨识的值; mode: exce、 eval、 single 将source编译为代码或者AST(Abstract Syntax Tree)对象。代码对象能够通过exce语句来执行或者eval()进行求值; pattern对象不能直接实例化,必须通过compile(); |
★ match(pattern, string, flags=0) | 尝试使用带有可选的标记的正则表达式的模式来匹配字符串。 如果匹配成功就返回匹配对象;失败就返回None;从字符串的首字符开始匹配; pattern: 正则表达式; string:要匹配的字符; flags: 标志位 |
★ search(pattern, string, flags=0) | 使用可选标记搜索字符串中第一次出现的正则表达式模式。如果成功,返回匹配对象;如果失败,就返回None; 不但搜索在字符串的第一次出现的位置,而且会严格的对字符串从左到右搜索 pattern: 正则表达式的字符串或原生字符串表示; string: 带匹配的字符串 flags: 正则表达式使用时的控制标记 |
★ findall(pattern,string[, flages]) | 查找字符串中所有(非重复)出现的正则表达式模式,并返回一个匹配的 列表; pattern: 正则表达式内有多个括号, 返回元祖(1)元祖中字符串的个数与括号对数相同,(2)字符串内容与每个括号内的正则表达式相对应,(3)排放顺序是按照括号出现的顺序; 一个括号: 返回列表,元素为字符串,字符串内容与 括号中 正则表达式相对应(非整个正则表达式对应); 不带括号: 返回列表,元素为字符串,字符串内容与正则表达式相对应(整个正则表达式对应) |
★ finditer(pattern,string[, flages]) | 与findall()函数相同,但返回的是一个 迭代器 。 对于每一次匹配,迭代器都返回一个匹配对象 |
★ split(pattern, string, maxsplit=0) | 根据正则表达式的模式分隔符,split函数将字符串分割为 列表 ,然后返回成功匹配的列表,分割最多操作maxsplit次(默认分割所有匹配成功的位置) |
★ sub(pattern, repl, string, count=0) | 使用repl替换所有的正则表达式的模式在字符串中出现的位置,除非定义count,否则将替换所有出现的位置(另见 subn( )函数,该函数返回替换操作的数目); repl,就是replacement,被替换,的字符串的意思;repl可以是字符串,也可以是函数; string,即表示要被处理,要被替换的那个string字符串 |
purge( ) | 清除隐式编译的正则表达式模式 |
group(num=0) | 返回整个匹配对象 或者 编号为num的特定子组; 以str形式返回对象中match的元素 |
groups(default=None) | 返回一个包含所有匹配子组的元祖(如果没有匹配成功,返回一个空元祖) |
groupdict(default=None) | 返回一个包含所有匹配的命名子组的字典,所有的子组名称作为字典的键(如果没有成功匹配,则返回一个空字典) |
start() | 返回开始位置 |
end() | 返回结束位置 |
span() | 以tuple形式返回范围 |
使用
raw string类型(原生字符串类型),是不包含转义符的字符串,表示为: r'text'
; 例如:
邮政编码:r‘[1-9]\d{5}’
国内电话号码:r'\d{3}-\d{8}|\d{4}-\d{7}'
import re