【发布时间】:2014-06-23 14:14:42
【问题描述】:
我使用的是python 3.4.1版本,我不明白以下常规的结果 表达式:
import re
print(re.match("\[{E=(.*?),Q=(.*?)}\]","[{E=KT,Q=P1.p01},{E=KT2,Q=P2.p02}]").groups())
('KT', 'P1.p01},{E=KT2,Q=P2.p02')
我希望结果是
('KT', 'P1.p01')
但显然是第二个。*? '吃'所有字符,直到最后的'}]'。 我希望在第一个 '}" 字符处停止。
如果我省略了 '[' 和 ']' 字符,则行为与我预期的一样:
print(re.match("{E=(.*?),Q=(.*?)}","{E=KT,Q=P1.p01},{E=KT2,Q=P2.p02}").groups())
('KT', 'P1.p01')
【问题讨论】:
-
你可以在regex101看到一个正则表达式的解释。
标签: python regex regex-group non-greedy