我有以下字符串:
'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,然后匹配所有内容。
答案 0 :(得分:1)
似乎您可以使用
std::swap
请参见regex demo
详细信息
vector
-第1组:一个或多个单词字符r'(\w+) *: *(.*?)(?=\s*(?:\w+:|$))'
-用空格括起来的(\w+)
*: *
-第2组:直到第一次出现:
-0+个空格,后跟1+个单词字符,后跟(.*?)
或字符串位置的结尾。