给予:
str_var ='host="dsa.asd.dsc"port="1234"service_nameORdbName="dsa"pass="dsa"user="ewq"'例如,在主机的情况下,如何匹配可以有abc.dfg.ewq.asd等的搅拌?数据只能包含“”。特别的角色。
我得到的表达式只能与文本匹配,因为w+。
result = re.findall('(\w+)="(\w+)"', str_var)预期结果:
[('host':'dsa.asd.dsc'), ('port', '1234'), ('service_nameORdbName', 'dsa'), ('pass', 'dsa'), ('user', 'ewq')]发布于 2020-06-05 16:21:48
您可以将.添加到\w中
result = re.findall('(\w+)="([\w.]+)"', str_var)或者,将.分隔的单词与\w+(?:\.\w+)*匹配(一个或多个单词字符后面跟着0或多个圆点重复,然后是一个或多个单词字符):
result = re.findall('(\w+)="(\w+(?:\.\w+)*)"', str_var)或者,在双引号之间匹配值,这些双引号中可能包含除双引号以外的任何内容( "[^"]*"与"匹配,然后除双引号外为零或多个字符,然后为"):
result = re.findall('(\w+)="([^"]+)"', str_var))见Python演示。
https://stackoverflow.com/questions/62219770
复制相似问题