在 r 中使用 gsub 删除模式
Removing a pattern With gsub in r
我有一个字符串 Project Change Request (PCR) - HONDA DIGITAL PLATEFORM
保存在 supp_matches
中,supp_matches1
包含字符串 Project Change Request (PCR) -
。
supp_matches2 <- gsub("^.*[supp_matches1]","",supp_matches)
supp_matches2
# [1] " (PCR) - HONDA DIGITAL PLATEFORM"
这实际上是不正确的,但应该是这样的
supp_matches2
# [1] "HONDA DIGITAL PLATEFORM"
为什么它没有按应有的方式出现?
正如我在评论中所说,在您的表达式 gsub("^.*[supp_matches1]", "", supp_matches)
中,您实际上并没有使用对象 supp_matches1
,而只是其中的字母。
你可以做类似gsub(paste0("^.*", supp_matches1), "", supp_matches)
的事情来真正使用supp_matches1
中包含的表达式,除了@rawr提到的,你的表达式中有括号所以你需要将它们转义.
得到你想要的东西的正确表达是 sub("Project Change Request \(PCR\) - ", "", supp_matches)
要得到你想要的,可以使用gsub
(sub
)函数的fixed
参数,也就是说参数pattern
中的表达式将按原样匹配(因此,无需转义任何内容,而且也没有真正的正则表达式)。
所以你要找的是:
gsub(supp_matches1, "", supp_matches, fixed=TRUE) # or just with `sub` in this case
#[1] "HONDA DIGITAL PLATEFORM"
@cathG 已经提供了 fixed=TRUE 的答案。如果你想用正则表达式做所有的事情,那么你可以试试这个。
> w1 <- "Project Change Request (PCR) - HONDA DIGITAL PLATEFORM"
> w2 <- "Project Change Request (PCR) - "
> sub(paste0("^", gsub("(\W)", "\\\1", w2)), "", w1)
[1] "HONDA DIGITAL PLATEFORM"
这只是一种转义变量中存在的所有特殊字符,你想在子函数中用作第一个参数。
我有一个字符串 Project Change Request (PCR) - HONDA DIGITAL PLATEFORM
保存在 supp_matches
中,supp_matches1
包含字符串 Project Change Request (PCR) -
。
supp_matches2 <- gsub("^.*[supp_matches1]","",supp_matches)
supp_matches2
# [1] " (PCR) - HONDA DIGITAL PLATEFORM"
这实际上是不正确的,但应该是这样的
supp_matches2
# [1] "HONDA DIGITAL PLATEFORM"
为什么它没有按应有的方式出现?
正如我在评论中所说,在您的表达式 gsub("^.*[supp_matches1]", "", supp_matches)
中,您实际上并没有使用对象 supp_matches1
,而只是其中的字母。
你可以做类似gsub(paste0("^.*", supp_matches1), "", supp_matches)
的事情来真正使用supp_matches1
中包含的表达式,除了@rawr提到的,你的表达式中有括号所以你需要将它们转义.
得到你想要的东西的正确表达是 sub("Project Change Request \(PCR\) - ", "", supp_matches)
要得到你想要的,可以使用gsub
(sub
)函数的fixed
参数,也就是说参数pattern
中的表达式将按原样匹配(因此,无需转义任何内容,而且也没有真正的正则表达式)。
所以你要找的是:
gsub(supp_matches1, "", supp_matches, fixed=TRUE) # or just with `sub` in this case
#[1] "HONDA DIGITAL PLATEFORM"
@cathG 已经提供了 fixed=TRUE 的答案。如果你想用正则表达式做所有的事情,那么你可以试试这个。
> w1 <- "Project Change Request (PCR) - HONDA DIGITAL PLATEFORM"
> w2 <- "Project Change Request (PCR) - "
> sub(paste0("^", gsub("(\W)", "\\\1", w2)), "", w1)
[1] "HONDA DIGITAL PLATEFORM"
这只是一种转义变量中存在的所有特殊字符,你想在子函数中用作第一个参数。