【发布时间】:2018-05-29 12:54:01
【问题描述】:
给定字符串:
smple_paths <- c("/path/path/path/abc22/path/path",
"/apath/apath/paath/abc11/something/path")
我想替换除短语abc\\d{2}之外的所有字符
尝试
gsub(
pattern = "(?!abc\\d{2})",
replacement = "",
x = smple_paths,
perl = TRUE
)
# [1] "/path/path/path/abc22/path/path"
# [2] "/apath/apath/paath/abc11/something/path"
期望的结果
abc22
abc11
注意事项
- 我不是在寻找基于
stringr::str_extract的解决方案或任何其他不基于gsub的解决方案
【问题讨论】:
-
是不是要提取
abc\\d{2}?regmatches(smple_paths, gregexpr("abc\\d{2}", smple_paths))?为什么要替换? -
好吧,为什么不使用像
sub("^.*/(abc\\d{2})(?:/.*)?$", "\\1", smple_paths)这样更简单的东西? -
是的,但正如注释中所述,它必须进入
gsub语法。 -
@WiktorStribiżew 如果您愿意让
sub发表评论,我将很乐意接受。