我不太明白为什么这不会产生,"test"
并希望得到一个解释:
a = "blah test"
sub('^.*(test|$)', '\\1', a)
# [1] ""
Run Code Online (Sandbox Code Playgroud)
将其与sed
表达式进行比较:
echo 'blah test' | sed -r 's/^.*(test|$)/\1/'
# test
echo 'blah blah' | sed -r 's/^.*(test|$)/\1/'
#
Run Code Online (Sandbox Code Playgroud)
Fwiw,以下实现了我想要的R(并且相当于上述sed
结果):
sub('^.*(test)|^.*', '\\1', a)
Run Code Online (Sandbox Code Playgroud)
您需要标记^.*
作为非贪婪
> sub('^.*?(test|$)', '\\1', "blah test")
[1] "test"
> sub('^.*?(test|$)', '\\1', "blah blah")
[1] ""
Run Code Online (Sandbox Code Playgroud)