re.sub(pattern, repl, string, count=0, flags=0)
- pattern–正则表达式
- repl–可以是一段字符串,或者是一个方法(替换内容)
当repl为方法的时候,就必须是一个带有一个参数,且参数为MatchObject类型的方法,该方法需要返回一个字符串。 - string–原字符串
- count–替换几次,比如 1 就只替换匹配结果中的第一个记录
- flags–标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
re.I:使匹配对大小写不敏感
re.L:做本地化识别(locale-aware)匹配
re.M:多行匹配,影响 ^ 和 $
re.S: 使 . 匹配包括换行在内的所有字符
re.U :根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X: 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
import re
language = 'C++CJavaPythonC#JavaC#PHPC#'
# tips:字符串是不可更改
print('方法一:用replace替换:')
r1 = language.replace('C#', 'Go')
print(r1)
# re.sub中count的意思是替换几次,比如就只替换匹配结果中的第一个
print('方法二:使用re.sub正则替换:')
r2 = re.sub('C#', 'Go', language, 1)
print(r2)
print('方法三:re.sub中如何使用函数动态接受正则表达式:')
def convert_match(value):
# 获得匹配的结果
match_1 = value.group()
print(match_1)
return '$'+'GO'+'$'
r3 = re.sub('C#', convert_match, language)
print(r3)
print('方法四:把字符串中的数字大于50的替换为100,小于50的替换为0:')
def convert_num_match(value):
match = value.group()
if int(match) >=50:
return '100'
else:
return '0'
r4 = re.sub(r'\d+', convert_num_match, language)
print(r4)