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

时间:2010-02-18 12:13:06

标签: regex

我有一个这样的字符串:

BEGIN
blabla..
END;

BEGIN
one two    
END;

我想制作正则表达式,将分别找到这些部分。 我制作了正则表达式(?i)BEGIN[\s\S]*(?i)END; 但它发现此字符串是一个匹配的实例。但我需要两个。如何让它首先搜索END;,而不是最后一次?

谢谢!

2 个答案:

答案 0 :(得分:4)

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

它被称为懒惰量词。

答案 1 :(得分:2)

你需要一个非贪婪的*

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

请注意,正则表达式无法处理嵌套的BEGIN / END对。更好地使用解析器。