我有下面的字符串key1=[subKey1=[val1,val2=[k1,k2]],val3,val4,subKey2=[aaa,bbb]],key2=val5,key3,key4=[1,2,3]我必须解析这个字符串并在循环中处理找到的数据。
我已经编写了这个regexp:(([^=]+)=(\[(\S+)\],?|[a-z0-9-_]+))|([a-z0-9-_]+)但是它不能捕获key1部分,因为key4表达式以]字符结尾,我如何修复regexp以匹配字符串?\

regex=re.compile('(([^=]+)=(\[(\S+)\],?|[a-z0-9-_]+))|([a-z0-9-_]+)')
string="key1=[subKey1=[val1,val2=[k1,k2]],val3,val4,subKey2=[aaa,bbb]],key2=val5,key3,key4=[1,2,3]"

for i in regex.findall(string):
   #Do Stuff

最佳答案

Regexp不适合解析任何包含递归模式的内容改用真正的上下文无关语言解析器。否则,你必须把你的语言限制在一个更简单的格式。
或者尝试使用替换将其转换为json格式并使用json解析器。

关于python - 如何修复正则表达式以匹配我的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32414201/

10-11 05:13
查看更多