正则表达式:用来使用某种规则匹配字符串当中的子串
regular expression:正则表达式
最基本的用法
import re
my_string = "jintianhenmeihao"
pattern="hao"
result = re.search(pattern=pattern,string=my_string)
print(result)----<re.Match object; span=(13, 16), match='hao'>得到匹配对象
print(result.group()) # 得到最终的结果,group中默认值为0,要得到的匹配到的字符串,一定要加group()
元字符
[abc] 匹配[]中任意一个字符
. 匹配任意一个除了 外的字符
{m,n} 匹配某个字符m~n次如d{11,13}匹配数字11~13次
re.search(pattern,string),只会匹配一次,findall匹配多次,finditer匹配结果是可迭代的
Python默认是贪婪模式,如每次都是尽可能的匹配最多的
* 匹配任意字符0次或者任意次
? 匹配0次或者1次,非贪婪模式
.*? 常用组合:尽可能少的匹配任意字符
单字符
w 匹配一个字母、数字、下划线。等价于'[A-Za-z0-9_]'
d 匹配一个数字字符。等价于 [0-9]。
+匹配任意字符1次或者任意次
()分组
边界:
^开头
$结尾
正则表达式学习:
https://www.runoob.com/regexp/regexp-tutorial.html
re正则匹配关联用例
middleware中间件handler.py中设置类属性
# 类属性数据
exist_username = security_yaml_data['username']
wrong_username = security_yaml_data['wrong_username']
exist_email = security_yaml_data['email']
password = security_yaml_data['password']
wrong_password = security_yaml_data['wrong_password']
# 数据替换
@classmethod
def data_replace(cls,re_str,pattern="#(.*?)#"):
results = re.finditer(pattern=pattern,string=re_str)
for result in results:
key = result.group(1)
new = str(getattr(cls,key,""))
old = result.group()
re_str = re_str.replace(old,new)
return re_str