正则表达式使用单个字符串来描述,匹配一系列符合某个表达式规则的字符串。
正则表达式一般包含原字符和元字符两种。
()表示一个组,通俗的理解就是可以用它来标记一个表达式组的开始和结束。
元字符:
.:匹配任意单个字符(汉字、字母、数字、符号等)
x|y:匹配x或y。例如,“z|food”能匹配“z”或“food”(此处请谨慎)。“[z|food”则匹配“zood”或“food”。
[xyz:匹配所包含的任意一个字符。例如,“[abc”可以匹配“plain”中的“a”。
[^xyz:匹配未包含的任意字符。例如,“[^abc”可以匹配“plain”中的“plin”任一字符。
[a-z:匹配指定范围内的任意字符。例如,“[a-z”可以匹配“a”到“z”范围内的任意小写字母字符。
[^a-z:匹配任何不在指定范围内的任意字符。例如,“[^a-z”可以匹配任何不在“a”到“z”范围内的任意字符。
\d:匹配一个数字字符。等价于[0-9。
\D:匹配一个非数字字符。等价于[^0-9。
\s:匹配任何不可见字符,包括空格、制表符、换页符等等。
\S:匹配任何可见字符。
限定符:
+:至少匹配一次(>=1次)
?:最多匹配一次(>=0,<=1)
*:匹配0次或多次(>=0)
Python中如何使用正则表达式
(1)导入Python自带的正则表达式模块(re)来使用正则表达式
import re
(2)查找字符串(search函数)
re.search(pattern, string, flags=0)
pattern:匹配的正则表达式
string:需要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式(默认为0)
re.search:扫描整个字符串并返回第一个成功的匹配(对象),如果匹配失败search()就返回None。
在使用re.search匹配时,匹配的正则表达式中如有特殊符号需要转义,否则无法正常匹配
未做转义的特殊字符无法正常进行字符串的匹配
特殊字符转义后即可正常进行字符串的匹配(使用元字符进行匹配)
匹配任意单个字符的元字符(.)
可匹配多次的限定符(*)的使用
可匹配多次的限定符(*)与最多可匹配一次的限定符(?)的结合使用
匹配成功后根据组取值(不传参就返回整个匹配的字符串)
匹配成功后根据组取值(传组的序号就返回该组里面的字符串)
(3)查找并替换字符串(sub函数)
re.sub(pattern,repl,string,count=0,flags=0)
pattern:匹配的正则表达式
repl:替换的字符串
string:需要匹配的字符串
count:替换的次数(默认为0,表示全部替换)
flags:标志位,用于控制正则表达式的匹配方式(默认为0)
count为默认值时,会替换所有符合表达式的字符串
指定count次数可控制替换的次数
search函数、sub函数以及while循环结合使用进行批量替换
[Python] 纯文本查看 复制代码 import re #导入Python自带的re模块
def replace(data,dict):
re_new = "\\${(.*?)}" #定义正则表达式
while re.search(re_new,data): #只要字符串中有匹配正则表达式的字符串,循环就会进行下去
key = (re.search(re_new,data)).group(1) #获取匹配正则表达式的字符串组里面的字符串,并赋值给key这个变量
value = dict[key] #将获取到的匹配正则表达式字符串组里面的字符串做为字典里的key取值
data = re.sub(re_new,value,data,count = 1) #使用sub函数将匹配正则表达式的字符串替换为上面通过key获取到的值,并重新赋值给data
print(data)
print(type(data))
data = '{"name":"${name}","age":"${age}"}'
dict = {'name':'Python','age':'18'}
replace(data,dict)
|