我们有一个自由文本:
sal{del{rf}ghladfs}wds{w12rf}qq
输出应为:
salwdsqq
请尽可能分享各种方法。例如:lapply,gsub,for / while循环,grep
答案 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"