Python 匹配组

0 投票
2 回答
1444 浏览
提问于 2025-04-18 05:24

我在用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

除非你的实际需求复杂得多,否则你可以直接使用 findall 把值提取到相应的变量中,像这样:

import re
line = "# SomeKey: Value Is A String"
key, val = re.findall(r"# (.*?): (.*)$", line)[0]
# (key, val) == ('SomeKey', 'Value Is A String')
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')]

演示

对于名字,你可以这样做:

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

演示

撰写回答