Regex Group多次出现

时间:2013-09-24 06:10:09

标签: python regex regex-group

我要解析以下字符串:

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 [^:] :[^:] :?"的出现次数,所以我会得到两个结果:

  • Overriden Field 2:...... Field 3:
  • Overriden Field 4:... Field 5:

然后我将不得不切断最后一部分" \ n [^:] *:"。这看起来并不聪明。

有人想提出一些建议吗?

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

\s*([^:]+)\s*:\s*((?:[^:](?![^:\n]+:))+)\s*

[我把\s*只是为了避免尾随空格和/或换行符,可以在不更改核心内容的情况下删除它们。

regex101 demo

正则表达式开始于:

([^:]+):([^:]+)

然后我将第二部分更改为((?:[^:](?![^:\n]+:))+),这样可以确保同一行上没有:(这意味着它会进入值顶部的字段)。< / p>