r gsub-仅替换单词的第一个匹配项
我有这样一个字符串:“21-Augure-2017”,我想用“xx”替换21后的“st”,这样结果是 “2017年8月25日” 我试过使用正则重复量词,例如r gsub-仅替换单词的第一个匹配项,r,regex,gsub,R,Regex,Gsub,我有这样一个字符串:“21-Augure-2017”,我想用“xx”替换21后的“st”,这样结果是 “2017年8月25日” 我试过使用正则重复量词,例如 gsub("st{1}", "xx", "21st-August-2017") 但这仍然替换了“st”的两个实例。如何指定它只匹配“st”的第一个实例?Trysub。这两个*sub函数的不同之处在于,sub仅替换模式的第一个匹配项,而gsub替换所有匹配项。请使用sub而不是gsub 将模式的第一个匹配项替换为sub,或将所有匹配项替换为
gsub("st{1}", "xx", "21st-August-2017")
但这仍然替换了“st”的两个实例。如何指定它只匹配“st”的第一个实例?Try
sub
。这两个*sub函数的不同之处在于,sub仅替换模式的第一个匹配项,而gsub替换所有匹配项。请使用sub
而不是gsub
将模式的第一个匹配项替换为sub
,或将所有匹配项替换为gsub
使用后视
s <- c("21st-August-2017")
gsub("(?<=\\d)st", "xx", s, perl = TRUE)
# [1] "21xx-August-2017"
s您还可以指定更具体的正则表达式。为了你的案子
gsub(“(\\d1{1,2}st){1}”,“xx”,“2017年8月21日”)
将起作用(用一个或两个数字替换所有出现的“st”
)
如果需要执行大量字符串操作,还可以查看stringr包,该包具有更详细的函数名和更合理的函数参数顺序:
stringi::stri_替换_first_regex(“2017年8月21日”、“st{1}”、“xx”)
stringi::stri\u替换\u首先固定(“2017年8月21日”,“st”,“xx”)
sub(“st”,“xx”,“2017年8月21日”,固定=真)