python -- re
正则式基础
. 表示任意字符,(不匹配'\n', 若使用了'S'选项,匹配'\n')
[ ] 字符集合设定,^如果放在字符串的开头,则表示取非的意思。[^5]表示除了5之外的其他字符。而如果^不在字符串的开头,则表示它本身。
[ ] 字符集合设定,^如果放在字符串的开头,则表示取非的意思。[^5]表示除了5之外的其他字符。而如果^不在字符串的开头,则表示它本身。
| 表示”或“, [abc] | [123]
^,$ 分别匹配串首和串尾,在[ ]之间意义不同,多行(选项'M')匹配每一行行首和每一行行尾
\A 匹配串首,与^不同的是即使在多行模式下也只匹配串首
\Z 匹配串尾,与$不同同上
\b 匹配单词边界
\B 匹配非边界
\d 匹配任何十进制数;它相当于类 [0-9]。
\D 匹配任何非数字字符;它相当于类 [^0-9]。
\s 匹配任何空白字符;它相当于类 [ fv]。
\S 匹配任何非空白字符;它相当于类 [^ fv]。
\w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
\W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]。
具有重复功能的元字符:
* 对于前一个字符重复0到无穷次
+ 对于前一个字符重复1到无穷次
+ 对于前一个字符重复1到无穷次
? 对于前一个字符重复0到1次
{m,n} 对于前一个字符重复次数在为m到n次,其中,{0,} = *,{1,} = , {0,1} = ?
{m} 对于前一个字符重复m次
{m,n} 对于前一个字符重复次数在为m到n次,其中,{0,} = *,{1,} = , {0,1} = ?
{m} 对于前一个字符重复m次
*, + , ? 均是最大匹配
*?, +?, ?? 是对应的最小匹配
(?<=...) 向前界定,即所要匹配的字符串前面要匹配的东西
(?=...) 向后界定
(?<!...) 向前非界定
(?!...) 向后非界定
(?:) 无捕获组
( ) 无命名组
(?P<name>...) 命名组
(?P=name...) 调用已匹配的命名组
\number 调用已匹配的组,从左到右从1开始
pattern可以被编译成一系列的字节码,然后用C编写的引擎执行。
re基本函数
findall(rule, target [,flag])
compile(rule [,flag]) 将正则规则编译成一个Pattern对象
flag
I IGNORECASE 忽略大小写区别
L LOCAL 字符集本地化
M MULTILINE 多行匹配
S DOTALL ‘.’号将匹配所有的字符
U UNICODE \w, \W, \b, \B, \d, \D, \s和 \S都将使用Unicode
X VERBOSE 这个选项忽略规则表达式中的空白,并允许使用’#’来引导一个注释。这样可以让你把规则写得更美观些
match(rule, targetString [,flag])
search(rule, targetString [,flag])
匹配成功,返回一个MatchObject,不成功返回NoneType
finditer(rule, target [,flag])
Pattern对象
flag, pattern, groupindex
findall(targetString [, startPos [, endPos]])
finditer(targetString [, startPos [, endPos]])
match(targetString [, startPos [, endPos]])
search(targetString [, startPos [, endPos]])
groupindex() : 返回({grpName:grpIndex , ...}
Match对象
group( [index/id] ) 获取匹配的组,默认返回组0,即全部值
groups() 返回全部的组
groupdict() 返回组名为key,匹配的内容为value的字典
start( [group] ) 获得匹配的组的开始位置
end( [group] ) 获取匹配的组的结束位置
span( [group] ) 获取匹配的组的(开始,结束)
expand( template ) 根据一个模版用找到的内容替换模版里的相应位置