Python 使用正则表达式捕获方括号内的文本
我在这里看到了一个问题: 这和我想要的差不多,但我不能让它工作 我的数据是:Python 使用正则表达式捕获方括号内的文本,python,regex,Python,Regex,我在这里看到了一个问题: 这和我想要的差不多,但我不能让它工作 我的数据是: [Honda]日本制造商[VTEC]电子升降控制装置名称 我希望输出是 [Honda],[VTEC] 我的表达是: m = re.match('(\[[^\[\]]*\])', '[Honda] Japanese manufacturer [VTEC] Name of electronic lift control') 我希望: m.group(0)输出[Honda] m.group(1)输出[VTEC] 但
[Honda]日本制造商[VTEC]电子升降控制装置名称
我希望输出是
[Honda],[VTEC]
我的表达是:
m = re.match('(\[[^\[\]]*\])', '[Honda] Japanese manufacturer [VTEC] Name of electronic lift control')
我希望:
输出m.group(0)
[Honda]
输出m.group(1)
[VTEC]
但是,这两种输出都
[Honda]
。如何访问第二个匹配项?您可以使用re.findall
获取所有匹配项,尽管您可以在列表中获取它们,并且不需要捕获组:
m = re.findall('\[[^\[\]]*\]', '[Honda] Japanese manufacturer [VTEC] Name of electronic lift control')
提供['[Honda]','[VTEC]']
,以便您可以使用以下各项获得:
print(m[0])
# => [Honda]
print(m[1])
# => [VTEC]
表达式中只有一个组,因此只能得到该组。组1为捕获组,组0为全部匹配文本;在你的表达中,它们是一样的。如果省略了(…)
括号,您将只有一个组0
如果要获得所有匹配项,请使用。这将返回匹配组的列表(如果表达式中没有捕获组,则返回组0):
如果您考虑的不是re:
s="[Honda] Japanese manufacturer [VTEC] Name of electronic lift control"
result = []
tempStr = ""
flag = False
for i in s:
if i == '[':
flag = True
elif i == ']':
flag = False
elif flag:
tempStr = tempStr + i
elif tempStr != "":
result.append(tempStr)
tempStr = ""
print result
输出:
['Honda', 'VTEC']
['Honda', 'VTEC']