正则表达式介绍
在编程中,字符串是涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。
正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。
(1)re.match函数
re.match 字符串的起始位置开始匹配,若匹配失败则返回None
import re
tail = 'hello world'
red = re.match(r'\w',tail)
print(red.group())
ret = re.match(r'\d',tail)
print(ret)
效果图:
(2)re.search方法
re.search 匹配整个字符串,并且返回第一个匹配成功的值
import re
tail = 'hello world 123'
ret = re.search(r'\d+',tail)
if ret != None:
print(ret.group())
else :
print('匹配失败!')
效果图:
(3)findall()
在字符串中找到所有符合正则表达式的的子串,并组成一个列表返回,若无结果,则返回一个空列表
import re
tail = 'hello world'
ret = re.findall(r'[a-zA-Z]+',tail)
print(ret)
red = re.findall(r'\d',tail)
print(red)
效果图:
(4)split()
按照能够匹配的子串将字符串分割后返回列表(例子:按多个数字分割)
import re
tail = 'hel123lo456wor789ld'
red = re.split(r'\d+',tail)
print(red)
效果图:
(5)sub()
类似于字符串的split(),将字符串按照匹配到的内容进行切分,并且替换成指定的内容
import re
tail = 'hel123lo45wor7ld'
red = re.sub(r'\d+','*',tail)
print(red)
效果图:
匹配模式
(1)忽略大小写,re.I
import re
temp = 'Hello World'
res = re.compile(r'hello world',re.I)
red = res.match(temp).group()
print(red)
效果图:
(2)多行匹配, re.M
import re
# 多行模式re.M和^
tail = '''first row1
second row2
third row3
'''
res = re.compile(r'^\w+',re.M)
red = res.findall(tail)
print(red)
# 多行模式re.M和$
tail = '''first row1
second row2
third row3
'''
res2 = re.compile(r'\w+$',re.M)
red2 = res2.findall(tail)
print(red2)
效果图:
(3)匹配任意多行,包括换行符,re.S
import re
tail = '''first row1
second row2
third row3
'''
res = re.compile(r'.+',re.S)
red = res.findall(tail)
print(red)
效果图: