【发布时间】:2016-11-17 10:21:41
【问题描述】:
我可以从字符串列表中匹配一个字符串,如下所示:
keys = ['a', 'b', 'c']
for key in keys:
if re.search(key, line):
break
问题是我想匹配一个由正则表达式 + 我指定的字符串组成的模式。像这样的:
keys = ['a', 'b', 'c']
for key in keys:
if re.search('[^\[]'+key+'[^\]]', line):
break
但这不起作用(在本例中,我只想匹配出现在方括号中的“a”、“b”和“c”)。 我认为这与原始字符串等有关,但我找不到让它工作的方法。有什么建议吗?
编辑:
假设我想匹配一个稍微复杂一点的模式:
'[^\s*data\.'+key+'\s*=\s*\[(.+)[^\]]'
为了匹配括号中的数字:
data.a = [12343.232 ]
【问题讨论】:
-
然后使用
re.search(r'\[{}]'.format(key), line)。或if r'[{}]'.format(key) in line:。见ideone.com/UimIyJ -
"...如果它们出现在方括号中,我想匹配 [...]" 那你为什么要否定方括号?
-
如果我想匹配更复杂的东西怎么办?就像我所做的编辑一样
-
你的意思是什么编辑?请提供一个测试用例。
-
@IgnacioVazquez-Abrams 因为我只想匹配括号中的内容