- python正则表达式有着无与伦比的强大的公,可以对文本内容进行解析处理。
- 第一个函数compile函数,可以把字符串编译成正则实例,便于后面重复调用,使用方式为re.compile(str,flag),常用的flag为re.M,re.I多行匹配和忽略大小写。
- 如下的函数,我们在定义了字符串之后,通过compile函数处理之后,这个strpatter可以在任何地方进行匹配操作,完成我们想要的处理。
- str1=“node\s+(?P\S+)\s+ip\s+(?P\d+.\d+.\d+.\d+)/(?P\d+)\s+(?P\S+)”
strpatter=re.compile(str1)
(?P\S+)这种形式可以为一个正则表达式定义一个别名,便于代码阅读和理解。使用的时候也很方便。
str2=“node R1 ip 3.2.1.1/24 loopback”
p=strpatter.match(str2)
print p.group(“Mask”)
print p.group(“nodename”)
print p.group(“ip”)
24
R1
3.2.1.1
顺利匹配到了我们想要的东西。
多行匹配的例子:
data = “”"
r24062 line1
hello word !!!
r24729 line2
revision:24181
“”"
r = re.compile("([0-9]{5,})", re.M)
str2="([0-9]{5,})"
strpatter2=re.compile(str2,re.M)
nums = strpatter2.finditer(data)
print nums.next().group()
print nums.next().group()
print nums.next().group()
运行结果:
24062
24729
24181
finditer返回符合所有正则的迭代器
删除字符串中的所有数字,
data = “”"
r24062 line1
hello word !!!
r24729 line2
revision:24181
“”"
str3="[0-9]{1,}"
strpatter3=re.compile(str3)
p=strpatter3.sub(" ",data)
print p
r line
hello word !!!
r line
revision:
sub函数替换字符串中符合正则要求的字符为" ".
str4="[0-9]{7}"
strpatter4=re.compile(str4)
strte1=“7894561,asasasa,789632541,7899455dfd7f9dsf4549946615fdsfds9466d94fdsfdsfds”
print strpatter4.findall(strte1)
findall函数返回所有符合正则的数组。