簡體   English   中英

正則表達式組多次出現

[英]Regex Group Multiple Occurrences

我有以下字符串要解析:

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

基本上,字段值對由冒號分隔,並且字段(並不總是以“ Field ...”開頭)從新行開始,后跟冒號。 我想提取覆蓋的字段-值對,所以我可以有兩個(或多個)字符串:一個為“覆蓋字段2:...值2.2”,另一個為“覆蓋字段4:值4”。

我不知道有多少個覆蓋字段,但是它們都以“ Overriden”開頭。 我不確定分組可以提供幫助。

我能想到的最好的方法是使用re.findAll()搜索“ Overriden [^:] :[^:] :?”的出現,因此我將得到兩個結果:

  • 覆蓋字段2:...字段3:
  • 覆蓋字段4:...字段5:

然后,我將必須截斷最后一部分“ \\ n [^:] *:”。 這看起來並不聰明。

任何人想提一些建議嗎?

您也許可以使用如下方式:

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

[我放置\\s*只是為了避免尾隨空格和/或換行符,可以在不更改要獲取的核心內容的情況下將其刪除]。

regex101演示

正則表達式開始於:

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

然后,我將第二部分更改為((?:[^:](?![^:\\n]+:))+) ,確保同一行上沒有一個:這意味着它將繼續進行)放在值頂部的字段中)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM