1

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

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

但这会返回以下字符串:“begin print x;;; print y ;;;”
任何的想法?

4

2 回答 2

2

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

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

begin = re.search("begin .+?;;;", line)
于 2012-05-31T22:28:42.723 回答
1

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

于 2012-05-31T22:28:26.573 回答