python正则表达式:提取2个值之间的字符串,不包括模式

时间:2018-03-23 20:25:03

标签: python regex

我有一个字符串:

a="12cdanfaw3i8hanjwofaef56ghah398hafadsf12cds;dkh38hfasdf56ghaldkshf12cdasdiuhf93f2asdf56gh"

我试图在12cd56gh之间提取字符串。这些值为anfaw3i8hanjwofaefs;dkh38hfasdfasdiuhf93f2asdf

我的正则表达式是re.findall(r'12cd.*56gh', a)

但是模式包含在输出中。

如何编写正则表达式以使其不包含在输出中?

由于

1 个答案:

答案 0 :(得分:3)

您需要一个非贪婪的正则表达式才能获得所有3个匹配项,并且您还需要使用匹配的组来不包含该模式,因此请使用12cd(.*?)56gh

import re
print(re.findall(r'12cd(.*?)56gh', '12cdanfaw3i8hanjwofaef56ghah398hafadsf12cds;dkh38hfasdf56ghaldkshf12cdasdiuhf93f2asdf56gh'))

输出:

['anfaw3i8hanjwofaef', 's;dkh38hfasdf', 'asdiuhf93f2asdf']

解释

12cd              // matches 12cd
    (             // matching group 1
      .*?         // matches any character between 0 and unlimited times, lazy
    )             
56gh              // matches 56gh