Python Match Group

时间:2014-05-05 11:10:20

标签: python regex string string-matching

我在创建匹配组时无法使用python

从字符串中提取两个值

这是我的意见:

# SomeKey: Value Is A String

我希望能够使用python匹配组/正则表达式语句提取SomeKeyValue Is A String。这是我到目前为止所拥有的

import re
line = "# SomeKey: Value Is A String"
mg = re.match(r"# <key>: <value>", line)

2 个答案:

答案 0 :(得分:1)

你必须提供你匹配的字符串:

import re
line = "# SomeKey: Value Is A String"
mg = re.match(r"# ([^:]+): (.*)", line)

>>> print mg.group(1)
SomeKey
>>> print mg.group(2)
Value Is A String

或者要自动获取键和值的元组,您可以执行以下操作:

import re
line = "# SomeKey: Value Is A String"
mg = re.findall(r"# ([^:]+): (.*)", line)

>>> print mg
[('SomeKey', 'Value Is A String')]

DEMO

对于姓名,你会这样做:

mg = re.match(r"# (?P<key>[^:]+): (?P<value>.*)", line)
print mg.group('key')

DEMO

答案 1 :(得分:0)

除非您的实际用例更复杂,否则您可以使用findall直接将值解压缩到相应的变量中:

import re
line = "# SomeKey: Value Is A String"
key, val = re.findall(r"# (.*?): (.*)$", line)[0]
# (key, val) == ('SomeKey', 'Value Is A String')