我不明白爲什麼這不會導致"test"
並希望得到一個解釋:[R VS sed的正則表達式的貪婪
a = "blah test"
sub('^.*(test|$)', '\\1', a)
# [1] ""
比較它sed
表達:
echo 'blah test' | sed -r 's/^.*(test|$)/\1/'
# test
echo 'blah blah' | sed -r 's/^.*(test|$)/\1/'
#
FWIW ,以下達到我想要的R(和上面的sed
結果相同):
sub('^.*(test)|^.*', '\\1', a)
@agstudy我試圖匹配'測試'或行尾 - 正如你可以看到'sed'理解這個邏輯。我不明白你爲什麼說'(test | $)== $'?我添加了一個我想要的編輯。 – eddi
@agstudy強調我不理解你寫的東西,嘗試運行'sub('(test | $)','bb',a)',其中R當然不會解釋爲'sub' $','bb',a)' – eddi
儘管這不會改變結果,但有一點需要注意的是R使用擴展正則表達式和sed(Ubuntu 12.04 64位上的4.2.1)默認情況下使用基本正則表達式。正如我所說的,'echo'blah test'| sed -r's /^.*(test | $)/ \ 1 /')'產生相同的輸出。 –