re库

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*ow*')
    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    正则表达式中的.操作符能够匹配所有字符,默认匹配除
外的所有字符

例:

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
原文地址:https://www.cnblogs.com/daicw/p/13275795.html