在字符串的最后一个句点后删除文本

ric*_*rdo 5 grep r

我有一个grep难以理解的难题:我想删除字符串集合中最后一段时间后的文本(我正在使用R,因此perl语法可用).

例如,假设字符串是ABCD.txtgrep将返回ABCD,如果文本是abc.com.foo.bar,它将返回abc.com.foo.

任何帮助非常感谢(我不认为我可以喝更多的咖啡!).

G. *_*eck 9

以下是一些解决方案:

sub("^(.*)[.].*", "\\1", "abc.com.foo.bar") # 1
## [1] "abc.com.foo"

library(tools)
file_path_sans_ext("abc.com.foo.bar") # 3
## [1] "abc.com.foo"
Run Code Online (Sandbox Code Playgroud)

添加.关于要求删除前导句点的评论,最简单的方法就是将x其输入上面的任何一个输入字符串:

sub("^[.]*", "", x)
Run Code Online (Sandbox Code Playgroud)

要在一行中执行任何操作:

x <- c("abc.com.foo.bar", ".abc.com.foo.bar", ".vimrc")

sub("^[.]*(.*)[.]?.*$", "\\1", x) # 1a
## [1] "abc.com.foo.bar" "abc.com.foo.bar" "vimrc"          

file_path_sans_ext(sub("^[.]*", "", x))
## [1] "abc.com.foo" "abc.com.foo" "vimrc" 
Run Code Online (Sandbox Code Playgroud)