我想得到“开始打印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 ;;;”
任何的想法?
重复默认是贪婪的,这意味着它会匹配尽可能多的字符。这导致第.+
一个传递权;;;
并匹配字符串的其余部分直到最后一个;;;
。
为防止这种情况,请将 更改.+
为.+?
,这会使重复变得懒惰(匹配尽可能少的字符):
begin = re.search("begin .+?;;;", line)
您需要 + 的非贪婪版本。默认情况下,.+
将匹配尽可能多的字符,因此它将捕获从“开始”到最后一次出现“;;;”的所有内容。试试re.search("begin .+?;;;", line)
吧。