2010-02-18 56 views
1

我有一個這樣的字符串:正則表達式:匹配至第一,沒有持續occurency

BEGIN 
blabla.. 
END; 

BEGIN 
one two  
END; 

我要讓正則表達式,將分別找到這個部分。 我做了正則表達式(?i)BEGIN[\s\S]*(?i)END; 但它發現這個字符串作爲一個實例匹配。但我需要兩個。如何使它搜索END;首次發生,而不是最後?

謝謝!

回答

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

它被稱爲惰性量詞。

+0

太棒了!感謝您的快速回復 – 2010-02-18 12:15:59

2

你需要一個非貪婪*

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

注意,正則表達式不能處理嵌套的BEGIN/END對。更好地使用解析器。

+0

其實我解析PL/SQL,我希望它不支持嵌套:) – 2010-02-18 14:49:18