Python 在冒号前后匹配单词

Python 在冒号前后匹配单词,python,regex,Python,Regex,我有以下字符串: 字段-->字段1:\r\n文件D2:\r\n源字段-->键1:VALUE1,键2:VALUE2,键3:VALUE3\r\n 我希望从上面的字符串中获得以下内容: [FIELD1, ] [FIELD2, ] [KEY1, VALUE1] [KEY2, VALUE2] [KEY3, VALUE3] 所以如果值为空,我仍然需要它。它有时是空的,有时不是空的。字段的数量也可能有所不同 我试过: x= 'FIELDS--> FIELD1: \r\n FILED2: \r\nSO

我有以下字符串: 字段-->字段1:\r\n文件D2:\r\n源字段-->键1:VALUE1,键2:VALUE2,键3:VALUE3\r\n

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

[FIELD1, ]
[FIELD2, ]
[KEY1, VALUE1]
[KEY2, VALUE2]
[KEY3, VALUE3]
所以如果值为空,我仍然需要它。它有时是空的,有时不是空的。字段的数量也可能有所不同

我试过:

x= 'FIELDS--> FIELD1:  \r\n FILED2: \r\nSOURCEFIELDS--> KEY1: VALUE1, KEY2: VALUE2, KEY3: VALUE3\r\n'
   x.split(':')
你可以用

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

详细信息

  • (\w+)
    -第1组:一个或多个单词字符
  • *:
    -0个或更多空格和一个
  • (?:*([\w.-]+)?
    -一个可选的
    • *
      -0或更多空格
    • ([\w.-]+)
      -第2组:一个或多个单词、
      -
      字符

@WiktorStribiżew几乎可以完美地工作。如果值有点和破折号,我该如何处理?谢谢!如果你把答案贴出来,我会接受的。解释很有帮助。我希望能投两次票。