考虑以下字符串:
tempo/blah/blah/aaa-bbb-ccc/def/ghi/jkl
我有一堆字符串,其中有/aaa-bbb-ccc/
。我想删除/aaa-bbb-ccc/
之前出现的任何字符。上面的最终产品,例如,应该是/aaa-bbb-ccc/def/ghi/jkl
。
我的尝试,经过一些搜索:
x <- "tempo/blah/blah/aaa-bbb-ccc/def/ghi/jkl"
sub("^.*[^/aaa-bbb-ccc/]", "", x)
[1] ""
您需要使用懒惰点匹配,并将已知值与捕获组一起包装,以便稍后使用反向引用进行还原:
x <- "tempo/blah/blah/aaa-bbb-ccc/def/ghi/jkl"
sub(".*?(/aaa-bbb-ccc/)", "\\1", x)
## [1] "/aaa-bbb-ccc/def/ghi/jkl"
Seethis R demo.
请参见regex demo,.*?
尽可能少地匹配任何 0 + 字符,(/aaa-bbb-ccc/)
是一个 ID = 1 的捕获组,它引用了替换模式中的\1
。
请注意,您还可以使用regmatches
/regexpr
提取该部分:
x <- "tempo/blah/blah/aaa-bbb-ccc/def/ghi/jkl"
regmatches(x, regexpr("/aaa-bbb-ccc/.*", x))
请参见this R demo。.*
只获取任何 0 + 字符,直到整个字符向量的末尾。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(70条)