我要解析以下字符串:
Field 1:Value 1 Overriden Field 2: Value 2.1 Value 2.2 Field 3: Value 3 Overriden Field 4:Value 4 Field 5:Value5
基本上,字段 - 值对由冒号分隔,并且字段(不总是以&#34开头;字段...")从新行开始,后跟冒号。我想提取覆盖的字段 - 值对,所以我可以有两个(或多个)字符串:一个作为" Overriden字段2:...值2.2"和#34; Overriden Field 4:Value 4"。
我不知道有多少覆盖字段,但它们都以" Overriden"开头。我不确定分组可以提供帮助。
我能想到的最好的方法是使用re.findAll()来搜索" Overriden [^:] :[^:] :?"的出现次数,所以我会得到两个结果:
然后我将不得不切断最后一部分" \ n [^:] *:"。这看起来并不聪明。
有人想提出一些建议吗?
答案 0 :(得分:0)
您可以使用以下内容:
\s*([^:]+)\s*:\s*((?:[^:](?![^:\n]+:))+)\s*
[我把\s*
只是为了避免尾随空格和/或换行符,可以在不更改核心内容的情况下删除它们。
正则表达式开始于:
([^:]+):([^:]+)
然后我将第二部分更改为((?:[^:](?![^:\n]+:))+)
,这样可以确保同一行上没有:
(这意味着它会进入值顶部的字段)。< / p>