R 如何删除特定模式后的字符串或数字?
如果有一个向量x是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 <- 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_"