Python re.search首先按照结果

时间:2012-05-31 22:24:11

标签: python regex

我想得到“开始打印x ;;;”在python中通过re.search从这个:
fv(x,y,z)开始打印x ;;;打印y ;;;返回x + y + z结束;

我试过了:begin = re.search("begin .+;;;", line)

但是这会返回以下字符串:“begin print x ;;; print y ;;;”
有什么想法吗?

2 个答案:

答案 0 :(得分:2)

默认情况下,重复是贪婪的,这意味着它将匹配尽可能多的字符。这导致.+向右传递第一个;;;并匹配其余字符串,直到最后;;;

要防止这种情况发生,请将.+更改为.+?,这会使重复变为懒惰(匹配尽可能少的字符):

begin = re.search("begin .+?;;;", line)

答案 1 :(得分:1)

您需要non-greedy版本的+。默认情况下,.+将匹配尽可能多的字符,因此它将捕获从“开始”到最后一次出现';;;'的所有内容。请改为re.search("begin .+?;;;", line)