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而做的,我希望它不支持嵌套:)