2024-04-19 03:00:06 发布
网友
我想在python中通过检索由此: fv(x,y,z)开始打印x;;;打印y;;;返回x+y+z结束
我试过:begin = re.search("begin .+;;;", line)
begin = re.search("begin .+;;;", line)
但这将返回以下字符串:“begin print x;;;print y;;;” 你知道吗?你知道吗
默认情况下,重复是贪婪的,这意味着它将匹配尽可能多的字符。这将导致.+向右经过第一个;;;,并匹配字符串的其余部分,直到最后一个;;;。你知道吗
.+
;;;
要防止这种情况,请将.+更改为.+?,这会使重复变慢(匹配的字符尽可能少):
.+?
begin = re.search("begin .+?;;;", line)
您需要non-greedy版本的+。默认情况下,.+将匹配尽可能多的字符,因此它将捕获从“begin”到最后出现的“;;;”的所有内容。试试re.search("begin .+?;;;", line)。你知道吗
re.search("begin .+?;;;", line)
默认情况下,重复是贪婪的,这意味着它将匹配尽可能多的字符。这将导致
.+
向右经过第一个;;;
,并匹配字符串的其余部分,直到最后一个;;;
。你知道吗要防止这种情况,请将
.+
更改为.+?
,这会使重复变慢(匹配的字符尽可能少):您需要non-greedy版本的+。默认情况下,
.+
将匹配尽可能多的字符,因此它将捕获从“begin”到最后出现的“;;;”的所有内容。试试re.search("begin .+?;;;", line)
。你知道吗相关问题 更多 >
编程相关推荐