外观
正则表达式
字符串匹配
re.match()是一个用于字符串匹配的重要函数,它的使用方法如下:
- 该函数尝试从字符串的开头开始匹配正则表达式。如果匹配成功,则返回第一个符合正则表达式的
match对象,否则返回None。 - 函数接受三个参数:第一个是正则表达式,第二个是待匹配的字符串,第三个是可选的参数,用于指定匹配选项。
- 当指定
re.I选项时,表示忽略大小写;指定re.A选项时,表示\w不匹配汉字。 - 如果匹配成功,可通过
match对象的start()方法获取匹配子字符串的起始索引,end()方法获取结束索引,group()方法获取匹配的子字符串。
例:
# 字符串匹配
import re
template1 = r'\d{3}' # 匹配三个数字
string1 = '123abc456'
match1 = re.match(template1, string1, re.I)
print('符合条件的起始索引为', match1.start())
print('符合条件的最后索引为', match1.end())
print('符合条件的子字符串为', match1.group())运行结果:
符合条件的起始索引为 0
符合条件的最后索引为 3
符合条件的子字符串为 123re.match()方法同样可以返回第一个符合正则表达式的match对象。
例:
template2 = r'[a-z]{1}\d{2}' # 匹配一个字母和两个数字
string2 = '1ab23'
match2 = re.search(template2, string2, re.I) # 该方法和match()方法很相似 返回第一个符合条件的match对象 否则返回None
print('符合条件的起始索引为', match2.start())
print('符合条件的最后索引为', match2.end())
print('符合条件的子字符串为', match2.group())运行结果:
符合条件的起始索引为 2
符合条件的最后索引为 5
符合条件的子字符串为 b23findall()可以获取所有符合正则表达式的子字符串,返回值是一个match对象数组。
例:
template3 = r'abc[1-5]{1}' # 匹配abc加上一个数字
string3 = 'abc1bcd2abc3'
match3 = re.findall(template3, string3, re.I) # 该方法会返回一个列表 若没有匹配成功则返回一个空列表
print(match3)运行结果:
['abc1', 'abc3']- 使用正则表达式分割字符串 使用
re.split()方法分割字符串,参数1为正则表达式,参数2为字符串
例:
import re
pattern = r'\s*@' # 指定模式字符串
string = ' @安生 @张三 @李四 @明日科技'
list1 = re.split(pattern, string)
print('您@的好友为:')
for i in list1:
if i != '':
print(i)运行结果:
您@的好友为:
安生
张三
李四
明日科技