我有一個這樣的字符串:正則表達式:匹配至第一,沒有持續occurency
BEGIN
blabla..
END;
BEGIN
one two
END;
我要讓正則表達式,將分別找到這個部分。 我做了正則表達式(?i)BEGIN[\s\S]*(?i)END;
但它發現這個字符串作爲一個實例匹配。但我需要兩個。如何使它搜索END;
首次發生,而不是最後?
謝謝!
我有一個這樣的字符串:正則表達式:匹配至第一,沒有持續occurency
BEGIN
blabla..
END;
BEGIN
one two
END;
我要讓正則表達式,將分別找到這個部分。 我做了正則表達式(?i)BEGIN[\s\S]*(?i)END;
但它發現這個字符串作爲一個實例匹配。但我需要兩個。如何使它搜索END;
首次發生,而不是最後?
謝謝!
(?i)BEGIN[\s\S]*?(?i)END;
它被稱爲惰性量詞。
你需要一個非貪婪*
:
(?i)BEGIN[\s\S]*?(?i)END;
注意,正則表達式不能處理嵌套的BEGIN/END對。更好地使用解析器。
其實我解析PL/SQL,我希望它不支持嵌套:) – 2010-02-18 14:49:18
太棒了!感謝您的快速回復 – 2010-02-18 12:15:59