首页 > 其他 > 详细

re库

时间:2020-07-09 20:41:06      阅读:54      评论:0      收藏:0      [点我收藏+]
re.search()    在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
re.match()    在一个字符串的开始位置匹配正则表达式,返回match对象
re.findall()    搜索字符串,以列表的形式返回全部能匹配的子串
re.split()    将一个字符串按照正则表达式匹配的结果进行分割,返回列表类型
re.finditer()    搜索字符串,返回一个匹配的迭代类型,每个迭代元素是match对象
re.sub()    在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串

 

regex = re.compile(pattern,flags=0)

此时的regex是一个正则表达式

例:

content = Hello, I am Jerry, from Chongqing, a montain city, nice to meet you……
    regex = re.compile(\w*o\w*)
    y = regex.match(content)
    print(y)
    print(type(y))
    print(y.group())
    print(y.span())

# <_sre.SRE_Match object; span=(0, 5), match=Hello>
# <class _sre.SRE_Match>
# Hello
# (0, 5)

 

re.search(pattern,string,flags=0)

pattern    正则表达式的字符串或原生字符串表示
string    带匹配的字符串
flags    正则表达式使用时的控制标记

flags的常用标记:

re.I   re.IGNORECASE    忽略正则表达式的大小写,[A-Z]能够匹配小写字符
re.M  re.MULTLINE    正则表达式中的^操作符能够将给定字符串的每行当做匹配开始
re.S  re.DOTALL    正则表达式中的.操作符能够匹配所有字符,默认匹配除\n外的所有字符

例:

1 import re
2 match1 = re.search(r[1-9]\d{5},BIT 100081 TSU100084)
3 if match1:
4     print(match1.group(0))
5 
6 #结果:100081

re.match(pattern,string,flags=0)

例:

1 import re
2 match2 = re.match(r[1-9]\d{5},BIT 100081)
3 if match2:
4     print(match2.group(0))
5     
6 #print(match2.group(0)),注意,如果这里不直接判断re.match()返回的对象是否为空,会报错,
7 #因为这里的match2并没有从这个字符串的开始部分匹配到目标字符串,所以返回的match2对象没有group这个参数

1 #对上面的代码进行修改
2 match3 = re.match(r[1-9]\d{5},100081 BIT)
3 if match3:
4     print(match3.group(0))
5 
6 #输出:100081

re.findall(pattern,string,flags=0)

例:

1 import re 
2 ls = re.findall(r[1-9]\d{5},BIT100081 CLS100084)
3 print(ls)#[100081,100042],将所有匹配的输出
4 for i in ls:
5     print(i)
6 #100081
7 #100084

re.split(pattern,string,maxsplit,flags=0)

例:

# maxsplit最大分割数,剩余部分作为最后一个元素输出
 1 import re
 2 m = re.finditer(r[1-9]\d{5},BIT100081 TSU100084)
 3 #re.finditer返回的是迭代类型
 4 #如果此时运行print(m),输出是<callable_iterator object at 0x0000024203F83E10>
 5 for i in m:
 6     print(i)
 7 #输出:
 8 #<re.Match object; span=(3, 9), match=100081>
 9 #<re.Match object; span=(13, 19), match=100084>
10 #正确的输出格式
11 for m in re.finditer(r[1-9]\d{5},BIT100081 TSU100084):
12     if(m):
13         print(m.group(0))
14 #100081
15 #100084

re.finditer(pattern,string,maxsplit,flags=0)

例:

 1 import re
 2 m = re.finditer(r[1-9]\d{5},BIT100081 TSU100084)
 3 #re.finditer返回的是迭代类型
 4 #如果此时运行print(m),输出是<callable_iterator object at 0x0000024203F83E10>
 5 for i in m:
 6     print(i)
 7 #输出:
 8 #<re.Match object; span=(3, 9), match=100081>
 9 #<re.Match object; span=(13, 19), match=100084>
10 #正确的输出格式
11 for m in re.finditer(r[1-9]\d{5},BIT100081 TSU100084):
12     if(m):
13         print(m.group(0))
14 #100081
15 #100084

re.sub(pattern,repl,string,count=0,flags=0)

例:

# repl    替换匹配字符串的字符串
# count    匹配的最大替换次数
1 import re
2 print(re.sub(r[1-9]\d{5},:zipcode,BIT100081 TSU100084))
3 #BIT:zipcode TSU:zipcode
4 print(re.sub(r[1-9]\d{5},:zipcode,BIT100081 TSU100084,count=1))
5 #BIT:zipcode TSU100084

 

re库

原文:https://www.cnblogs.com/daicw/p/13275795.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!