Regex 在R中,单个字符始终位于向量字符串的末尾
我有一个带字符串的向量,我想在R中处理它。 大概是这样的:Regex 在R中,单个字符始终位于向量字符串的末尾,regex,r,string,Regex,R,String,我有一个带字符串的向量,我想在R中处理它。 大概是这样的: c("sffssf/", "sfs/fs", "aaad") 我想确定的是,我总是在每个字符串的末尾有一个“/”,但有时它们在某个字符串(或其他地方)的末尾已经是一个“/” 我从stringr包中看到了stru sub, 我想如果最后一个字符是“/”的话,我可以有条件地删除它。 并始终添加“/”afterworths 我如何才能做到这一点,或者他们的方法更好吗?您并不需要stringr来实现这一点(尽管它可以工作),因为基本的R re
c("sffssf/", "sfs/fs", "aaad")
我想确定的是,我总是在每个字符串的末尾有一个“/”,但有时它们在某个字符串(或其他地方)的末尾已经是一个“/”
我从stringr
包中看到了stru sub
,
我想如果最后一个字符是“/”的话,我可以有条件地删除它。
并始终添加“/”afterworths
我如何才能做到这一点,或者他们的方法更好吗?您并不需要
stringr
来实现这一点(尽管它可以工作),因为基本的R regex功能已经足够了。你真正需要的是
sub('/?$', '/', c("sffssf/", "sfs/fs", "aaad"))
## [1] "sffssf/" "sfs/fs/" "aaad/"
sub
在第三个参数(向量)中查找第一个参数(模式),并将其替换为第二个参数(替换)。在这里,“/?$”
告诉它查找/
,如果它在那里(即0或1次)?
,然后是行的末尾$
。由于替换是一个/
,因此它将取出一个位于行末尾的/
(如果有),并添加一个/
,以满足您的需要。您并不需要stringr
,因为基本的正则表达式功能已经足够了。你真正需要的是
sub('/?$', '/', c("sffssf/", "sfs/fs", "aaad"))
## [1] "sffssf/" "sfs/fs/" "aaad/"
sub
在第三个参数(向量)中查找第一个参数(模式),并将其替换为第二个参数(替换)。在这里,“/?$”
告诉它查找/
,如果它在那里(即0或1次)?
,然后是行的末尾$
。由于替换是一个/
,它将从字符串中取出一个位于行末尾的/
(如果有),并添加一个/
,为您提供所需的内容。我们可以使用stru replace
library(stringr)
str_replace(v1, "/*$", "/")
#[1] "sffssf/" "sfs/fs/" "aaad/"
数据
v1我们可以使用stru替换fromstringr
library(stringr)
str_replace(v1, "/*$", "/")
#[1] "sffssf/" "sfs/fs/" "aaad/"
数据
v1sub(“/?$”,“/”,c(“sffssf/”,“sfs/fs”,“aaad”))
@RichardScriven是的,注释:paste0(测试,ifelse(测试,nchar(测试),nchar(测试))!=“/”,“/”,“/”)工作正常,同时感谢:sub(“/?$,“/”,c(“sffssfsfsf/”,“sfs/fs”,“aaad”))
@RichardScriven(测试,nchar(测试),nchar(测试))!=“/”,“/”,“/”)工作正常,还有sub,谢谢:)