【Class 14】python 正则表达式 re.sub 函数中也可以传递函数

实例一:
匹配所有数字,并且将>=6的数字替换成9, 否则替换为0

import re

# 匹配所有数字,
# 并且将>=6的数字替换成9, 否则替换为0
a = 'AB837D5D4F7G8H7F8H56D4D7G4D3'

def covert(value):
    # 获取匹配到的字符串的值
    matched = value.group()
    # 判断逻辑 >=6 则返回字符串9,否则返回字符串0
    if int(matched) >= 6 :
        return '9'
    else:
        return '0'

# 将covert函数以参数传入,
# 将sub匹配到的字符串的结果传入covert函数中
r = re.sub('\d', covert, a)

print(r)

输出结果为:
AB909D0D0F9G9H9F9H09D0D9G0D0

实例二:
获取某段字符串中间的一段字符串

import re

s = 'life is short, i use python'

# 使用 .* 来匹配中间的所有字符
# 使用 () 小阔号来将搜索到的字符串进行分区 group(1)
r = re.search('life(.*)python',s)

# group(0) 表示匹配到的整串字符串
print(r.group(0))
# group(1) 表示小阔号中的字符串
print(r.group(1))


r = re.findall('life(.*)python',s)
print(r)

执行结果:
life is short, i use python
 is short, i use
[' is short, i use ']

实例三:
获取某段字符串中间的一段字符串

import re

s = 'life is short, i use python,i love python'

# 使用 .* 来匹配中间的所有字符
# 使用 () 小阔号来将搜索到的字符串进行分区 group(1)
r = re.search('life(.*)python(.*)python',s)

# group(0) 表示匹配到的整串字符串
print(r.group(0))
print(r.group(1))
print(r.group(2))

print('--------------')
# group 可以将参数放在一起
print(r.group(0,1,2))

print('--------------')
# groups 不会返回整个搜索结果,只会返回中间的匹配结果
print(r.groups())

执行结果:
life is short, i use python,i love python
 is short, i use
,i love
--------------
('life is short, i use python,i love python', ' is short, i use ', ',i love ')
--------------
(' is short, i use ', ',i love ')

你可能感兴趣的:(Python总结)