我有一个字符串:
a="12cdanfaw3i8hanjwofaef56ghah398hafadsf12cds;dkh38hfasdf56ghaldkshf12cdasdiuhf93f2asdf56gh"
我试图在12cd
和56gh
之间提取字符串。这些值为anfaw3i8hanjwofaef
,s;dkh38hfasdf
,asdiuhf93f2asdf
我的正则表达式是re.findall(r'12cd.*56gh', a)
。
但是模式包含在输出中。
如何编写正则表达式以使其不包含在输出中?
由于
答案 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