删除手镯的内容

时间:2015-05-29 14:42:22

标签: regex r data-manipulation

我们有一个自由文本:

sal{del{rf}ghladfs}wds{w12rf}qq  

输出应为:

salwdsqq

请尽可能分享各种方法。例如:lapply,gsub,for / while循环,grep

3 个答案:

答案 0 :(得分:1)

这适用于R

string1 <- "sal{del{rf}ghla}dfs}wds{w12rf}qq"
string2 <- gsub("{[^{}}]*}", "", string1, perl = TRUE)
string3 <- gsub("{.*}", "", string2, perl = TRUE)
string3

答案 1 :(得分:1)

我认为无论你有平衡或不平衡的括号,这都会有效:

不平衡(如在q中)

x <- "sal{del{rf}ghla}dfs}wds{w12rf}qq  "
paste0(gsub('\\w+}|[{} ]', '', strsplit(x, '\\{\\w+')[[1]]), collapse = '')
# [1] "salwdsqq"

随机插入一个

x <- "sal{del{{rf}ghla}dfs}wds{w12rf}qq  "
paste0(gsub('\\w+}|[{} ]', '', strsplit(x, '\\{\\w+')[[1]]), collapse = '')
# [1] "salwdsqq"

答案 2 :(得分:1)

您可以使用递归正则表达式执行此操作。

x <- 'sal{del{rf}{sfddfdffdf}ghladfs}wds{w12rf}qq'
gsub('{(?:[^{}]+|(?R))*+}', '', x, perl=TRUE)
# [1] "salwdsqq"