2011-08-16 48 views
0

我有以下形式的字符串:懶惰正則表達式與OR

greengrocerabc 
sandwichcba 
oscardcba 

我想懶洋洋地匹配abcabcdabcde,這樣我就可以拿到第一個組件。因此,像

sub("^(.+)(abc|cba|dcba)", "\\1", "oscardcba") => "oscar" 

然而,正則表達式OR貪婪比賽cba,我得到oscard

我怎麼能懶匹配這個OR?語言是R,但它可以像grep或perl一樣行事。

回答

4

然後使量詞非貪婪:

^(.+?)(abc|cba|dcba) 

這樣,捕獲組將只包含最短的比賽(其中不包括abccbadcba)。

進一步閱讀:

相關問題