python -- re

正则式基础
.    表示任意字符,(不匹配'\n', 若使用了'S'选项,匹配'\n')
[ ]     字符集合设定,^如果放在字符串的开头,则表示取非的意思。[^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到无穷次
?   对于前一个字符重复0到1次
{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 )     根据一个模版用找到的内容替换模版里的相应位置

posted @ 2014-07-04 10:19  LOTUS2014  阅读(122)  评论(0编辑  收藏  举报