我对R中的正则表达式不太满意。我想在向量的每个元素中第三次出现“-”之后删除所有字符。
Initial string aa-bbb-cccc => aa-bbb aa-vvv-vv => aa-vvv aa-ddd => aa-ddd
有什么帮助吗?
从样本输入和预期输出来看,我假设您需要删除所有以第二个连字符开头的内容。
您可以使用
sub("^([^-]*-[^-]*).*", "\\1", x)
见正则表达式演示
详细资料:
^
-字符串开始
([^-]*-[^-]*)
-组1捕获0以外的其他字符-
,-
以及0以外的0个字符-
.*
-任意0个以上的字符(在这样的TRE正则表达式中,点也匹配换行符。)
的\\1
(\1
)是一个反向引用捕获到组1的文本。
R演示:
x <- c("aa-bbb-cccc", "aa-vvv-vv", "aa-ddd") sub("^([^-]*-[^-]*).*", "\\1", x) ## => [1] "aa-bbb" "aa-vvv" "aa-ddd"