我有以下形式的字符串:
greengrocerabc
sandwichcba
oscardcba
我想懒洋洋地匹配abc
,abcd
和abcde
,所以我可以获得第一个组件。像
sub("^(.+)(abc|cba|dcba)", "\\1", "oscardcba") => "oscar"
但是,正则表达式OR
贪婪匹配cba
我得到oscard
我如何懒惰匹配此OR
?语言是R,但它可以像grep或perl一样。
答案 0 :(得分:4)
然后使量词非贪婪:
^(.+?)(abc|cba|dcba)
这样,捕获组将只包含最短的匹配(不包括abc
,cba
或dcba
)。
进一步阅读: