R 如何删除特定模式后的字符串或数字?

R 如何删除特定模式后的字符串或数字?,r,regex,string-substitution,R,Regex,String Substitution,如果有一个向量x是 x <- c('/name12/?ad_2','/name13/?ad_3','/name14/?ad_4') 我试图使用gsub函数,但由于后面跟“name”的数字无效。因为所有这些数字的前缀长度相同: x <- c('/name12/?ad_2','/name13/?ad_3','/name14/?ad_4') substr(x,1,12) x您可以使用带有sub的正则表达式(因为您只执行一次搜索和替换,所以不需要gsub)并根据需要在结果中包含或排除的

如果有一个向量x是

x <- c('/name12/?ad_2','/name13/?ad_3','/name14/?ad_4')

我试图使用
gsub
函数,但由于后面跟“name”的数字无效。

因为所有这些数字的前缀长度相同:

x <- c('/name12/?ad_2','/name13/?ad_3','/name14/?ad_4')

substr(x,1,12)

x您可以使用带有
sub
的正则表达式(因为您只执行一次搜索和替换,所以不需要
gsub
)并根据需要在结果中包含或排除的内容使用模式

您可以使用
“(\\?ad\\[0-9]+$”
删除
?ad\
+数字,并替换为
“\\1”
以恢复
?ad\
值,或者只需匹配
然后匹配数字(并替换为

请参阅演示代码:

> x <- c('/name12/?ad_2','/name13/?ad_3','/name14/?ad_4')
> sub("(\\?ad_)[0-9]+$", "\\1", x)
[1] "/name12/?ad_" "/name13/?ad_" "/name14/?ad_"
> sub("_[0-9]+$", "_", x)
[1] "/name12/?ad_" "/name13/?ad_" "/name14/?ad_"
>x sub(“(\\?ad\[0-9]+$”,“\\1”,x)
[1] “/name12/?广告”“/name13/?广告”“/name14/?广告”
>子(“0-9]+$”,“x”,x)
[1] “/name12/?广告”“/name13/?广告”“/name14/?广告”

图案细节

  • -匹配下划线
  • [0-9]+
    -1个或多个(由于
    +
    量词匹配一个或多个事件,尽可能多)
  • $
    -字符串的结尾

尝试
gsub(“\ud”、“\ux”)
当您尝试使用
gsub
功能时,您做了什么?
> x <- c('/name12/?ad_2','/name13/?ad_3','/name14/?ad_4')
> sub("(\\?ad_)[0-9]+$", "\\1", x)
[1] "/name12/?ad_" "/name13/?ad_" "/name14/?ad_"
> sub("_[0-9]+$", "_", x)
[1] "/name12/?ad_" "/name13/?ad_" "/name14/?ad_"