冒号前后匹配词组

时间:2018-11-05 20:57:43

标签: python regex

我有以下字符串:

'FIELDS--> FIELD1: Random Sentence  \r\n FIELD2: \r\nSOURCEHINT--> FIELD3: 
 value.nested.value, FIELD4: 5.5.5.5, FIELD5: Longer Sentence, with more words-and punctation\r\n'

我希望从上面的字符串中获得以下内容:

[FIELD1, Random Sentence]
[FIELD2, ]
[FIELD3, value.nested.value]
[FIELD4, 5.5.5.5]
[FIELD5, Longer Sentence, with more words-and punctation]

如果该值为空,我仍然想要该值,并且我希望完整的句子。字段的数量也可能有所不同。 这类似于Match word before and after colon,但是在这种情况下,我需要完整的句子而不是仅单词。此外,FIELD名称可以更改。因此他们可以使用KEY3,而不是FIELD1。

我尝试过:

re.findall(r'(\w+) *:(?:(.*)?), x)

它在第一个匹配项之后停止匹配,因此它只输出FIELD1,然后匹配所有内容。

1 个答案:

答案 0 :(得分:1)

似乎您可以使用

std::swap

请参见regex demo

详细信息

  • vector-第1组:一个或多个单词字符
  • r'(\w+) *: *(.*?)(?=\s*(?:\w+:|$))' -用空格括起来的(\w+)
  • *: *-第2组:直到第一次出现
  • 的所有字符,0个或多个重复,并且尽可能少
  • :-0+个空格,后跟1+个单词字符,后跟(.*?)或字符串位置的结尾。