我有一个这样格式的字符串
s="""
stkcode="10001909" marketid="sh" isstop="S 01" turnover="0" contractid="000000" time="84445850"
"""
我想捕获其中的所有“关键字args”子字符串,即stkcode="10001909"
、isstop="S 01"
。请注意,普通的s.split()
不起作用,因为某些字段值中可能有空格,例如isstop="S 01"
。正确的方法似乎是re.split
,但我不知道如何编写适当的正则表达式。有人能帮忙吗?谢谢
编辑
添加更多信息:我们保证每个条目值中没有"
实际上,我们只需要“保护性”分割,即只分割配对"
之外的空白。
编辑:XML才是方向,而不是正则表达式。道歉
我的原始数据包含许多行Timestamp + some aux info + an XML string
。因此它不能被XML解析器直接解析,必须作为字符串逐行读取。所以我最初认为只要坚持使用string和regex作为每个(相对简单的)字符串。但我显然错了。而XML解析器无疑是一种可行的方法
产生:
正则表达式解释:
(...)="(...)"
匹配此格式中的所有内容,即您定义的kwarg格式第一组:
((?!\<).*?)
将匹配除前括号((?!\<)
)之外的所有字符(.*?
)第二组:
(.*?)
将只匹配所有字符。右括号在原始匹配模式的引号之外,所以您不必担心它编辑:
若要忽略字符周围的空白,请添加此反向匹配组
(?!\s)
不确定空格会出现在字符串中的什么位置,但是这个新的正则表达式会在每个相关的地方处理它:((?!\<)(?!\s).*?(?!\s))="(?!\s)(.*?)(?!\s)
相关问题 更多 >
编程相关推荐