达人物外之物,思身后之身,宁受一时之寂寞,毋取万古之凄凉。
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。re 模块使 Python 语言拥有全部的正则表达式功能。
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
print(re.match('www','www.angelni.io').span())#起始位置匹配
print(re.match('www','www.angelni.io'))#非起始位置匹配
'''结果
(0, 3)
<_sre.SRE_Match object; span=(0, 3), match='www'>
'''
re.search 扫描整个字符串并返回第一个成功的匹配。
print(re.search('www','www.angelni.io').span())#起始位置匹配
print(re.search('io','www.angelni.io').span())
'''
(0, 3)
(12, 14)
'''
re 模块提供了用于替换字符串中的匹配项。
phone = "183-3918-9296 # 这是我的电话号码"
# 删除字符串中的 Python注释
num = re.sub(r'#.*$', "", phone) # r 代表正则表达式,将在后面介绍具体规则
print("电话号码是:", num)
# 删除非数字(-)的字符串
num = re.sub(r'\D', "", phone)
print("电话号码是:", num)
'''
电话号码是: 183-3918-9296
电话号码是: 18339189296
'''
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象。
partten1 = re.compile(r'\d+')
partten2 = re.compile(r'\d')
result1 = partten1.findall('runoob123google456')
result2 = partten2.findall('runoob123google456')
print(result1)
print(result2)
'''
['123', '456']
['1', '2', '3', '4', '5', '6']
'''
split 方法按照能够匹配的子串将字符串分割后返回列表
print(re.split('\W+', 'runoob, runoob, runoob.'))
'''
['runoob23', 'runoob23', 'runoob121', '']
'''
返回字符串中所有不重叠匹配项的列表。如果模式中存在一个或多个捕获组,则返回组列表;
re.findall(pattern, string, flags=0)
#两种用法
pattern = re.compile(r'\d+')
pattern.findall('one1two2three3four4')
#[1,2,3,4]
#注意此处findall()的用法,可传两个参数;
pattern = re.compile(r'\d+')
re.findall(pattern,"one123")
#[1,2,3]