Regex 正则表达式:匹配到第一次,而不是最后一次

Regex 正则表达式:匹配到第一次,而不是最后一次,regex,Regex,我有这样一个字符串: BEGIN blabla.. END; BEGIN one two END; 我想做一个正则表达式,它可以单独找到这些部分。 我让正则表达式(?I)开始[\s\s]*(?I)结束 但是它发现这个字符串作为一个实例匹配。但我需要两个。如何使其搜索结束第一次出现,不是最后一次 谢谢 (?i)BEGIN[\s\S]*?(?i)END; 这叫做惰性量词 它被称为惰性量词。您需要一个非贪婪的*: (?i)BEGIN[\s\S]*?(?i)END; 注意,正则表达式不能

我有这样一个字符串:

BEGIN
blabla..
END;

BEGIN
one two    
END;
我想做一个正则表达式,它可以单独找到这些部分。 我让正则表达式
(?I)开始[\s\s]*(?I)结束
但是它发现这个字符串作为一个实例匹配。但我需要两个。如何使其搜索
结束第一次出现,不是最后一次

谢谢

(?i)BEGIN[\s\S]*?(?i)END;
这叫做惰性量词


它被称为惰性量词。

您需要一个非贪婪的
*

(?i)BEGIN[\s\S]*?(?i)END;

注意,正则表达式不能处理嵌套的开始/结束对。最好使用解析器。

您需要一个非贪婪的
*

(?i)BEGIN[\s\S]*?(?i)END;

注意,正则表达式不能处理嵌套的开始/结束对。最好使用解析器。

实际上我是为解析PL/SQL而做的,我希望它不支持嵌套:)实际上我是为解析PL/SQL而做的,我希望它不支持嵌套:)