python re正则

概述
https://www.cnblogs.com/zjltt/p/6955965.html
元字符
元字符在字符集中不起作用
用于取消元字符
语法
说明
表达式实例
完整匹配的字符串
一般字符
匹配自身
abc
abc
.
匹配任意字符( 除外)
ab.
abc
[...]
字符集(对应位子可以是字符集中的任意字符)
a[bcd]e
abe
ace
ade
预定义字符集(可以写在字符集[...]中)
 
 
 
d
数字:[0-9]
adc
a1c
D
非数字[^d]
aDc
abc
s
空白字符:[<空格> fv]
asc
a c
S
非空白字符:[^s]
aSc
abc
w
单词字符:[A-Za-z0-9_]
awc
abc
W
非单词字符:[^w]
aWc
a c
数量词(用在字符或(...)之后)
 
 
 
*
匹配前一个字符0次或无限次
abc*
ab
abccc
+
匹配前一个字符1次或无限次
abc+
abc
abccc
匹配前一个字符0次或1次
abc?
ab
abc
{m}
匹配前一个字符m次
ab{2}c
abbc
{m,n}
匹配前一个字符m至n次
ab{1,2}c
abc
abbc
*? +? ?? {m,n}?
使* + {m,n}变成非贪婪模式
 
 
边界匹配
 
 
 
^
匹配字符串开头
在多行模式中匹配每一行开头
^abc
abc
$
匹配字符串末尾
多行模式中每一行末尾
$abc
abc
逻辑和分组
 
 
 
|
左右任意匹配一个
abc|def
abc
def
(...)
分组
(abc){2}
a(123|456)c
abcabc
a123c
a456c
(?P<name>...)
分组,原有编号指定别名
(?P<id>abc){2}
abcabc
(?p=name)
引用别名为<name>分组的字符串
(?P<id>d)abc(?P=id)
1abc1
 

正则匹配模式表

标志

含义

re.S(DOTALL)

使.匹配包括换行在内的所有字符

re.I(IGNORECASE)

使匹配对大小写不敏感

re.L(LOCALE)

做本地化识别(locale-aware)匹配,法语等

re.M(MULTILINE)

多行匹配,影响^和$

re.X(VERBOSE)

该标志通过给予更灵活的格式以便将正则表达式写得更易于理解

re.U

根据Unicode字符集解析字符,这个标志影响w,W,,B

 

 

 

 

执行匹配
方法/属性
作用
match()
字符串开始位置匹配,成功返回MatchObject,失败返回None
search()
扫描字符串,找到RE匹配的位置,成功返回MatchObject,失败返回None
findall()
找到RE匹配的所有子串,作为一个列表返回
finditer()
找到RE匹配的所有子串,作为一个迭代器返回    
 
 
MatchObject实例方法
 
方法/属性
作用
group()
返回被RE匹配的字符串
start()
返回匹配开始的位置
end()
返回匹配结束的位置
span()
返回一个元祖包含匹配(开始,结束)的位置
 
 
match函数
语法
re.match(pattern,string,flags=0)
参数说明
 
参数
描述
patten
正则表达式
string
被搜索匹配的字符串,字符串开始
flags
正则表达式修饰符
re.match匹配成功返回matchOject,失败返回None,通过group(num)或groups()获取匹配对象
匹配对象的方法  
匹配对象的方法
描述
 group(num=0)
返回整个匹配(指定分组)
groups()
以元祖形式返回匹配子组
例子
import re
line = "Dogs are smart than caters"
matchObject = re.match(r'(.*) are .* than (.*)',line,re.M|re.I)
if matchObject:
    print "matchObject group()",matchObject.group()
    print "matchObject group(1)",matchObject.group(1)
    print "matchObject group(2)",matchObject.group(2)
else:
    print "No match"
当执行上面的代码,它产生以下结果:
matchObject group() Dogs are smart than caters
matchObject group(1) Dogs
matchObject group(2) caters
 
search函数
语法
re.search(pattern,string,flags=0)
参数说明
参数
描述
patten
正则表达式
string
被搜索匹配的字符串,字符串开始
flags
正则表达式修饰符
re.search匹配成功返回searchOject,失败返回None,通过group(num)或groups()获取匹配对象
匹配对象的方法
匹配对象的方法
描述
 group(num=0)
返回整个匹配(指定分组)
groups()
以元祖形式返回匹配子组
 
例子
import re
line = "Dogs are smart than caters"
seachObject = re.search(r'(.*) are .* than (.*)',line,re.M|re.I)
if seachObject:
    print "searcObject.group():",seachObject.group()
    print "searcObject.group(1):",seachObject.group(1)
    print "searcObject.group(2):",seachObject.group(2)
else:
    print "No search"
当执行上面的代码,它产生以下结果
searcObject.group(): Dogs are smart than caters
searcObject.group(1): Dogs
searcObject.group(2): caters

 

 
原文地址:https://www.cnblogs.com/yangyangchunchun/p/9352003.html