我们有一个免费的文本:
sal{del{rf}ghladfs}wds{w12rf}qq 输出应为:
salwdsqq如果可能,请分享各种方法。例如: lapply、gsub、for/while循环、grep
发布于 2015-05-29 22:56:09
这在R中有效
string1 <- "sal{del{rf}ghla}dfs}wds{w12rf}qq"
string2 <- gsub("{[^{}}]*}", "", string1, perl = TRUE)
string3 <- gsub("{.*}", "", string2, perl = TRUE)
string3发布于 2015-05-29 23:05:44
我认为无论你有平衡还是不平衡的括号,这都是可行的:
不平衡(如在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"发布于 2015-05-30 10:42:07
您可以使用递归正则表达式来完成此操作。
x <- 'sal{del{rf}{sfddfdffdf}ghladfs}wds{w12rf}qq'
gsub('{(?:[^{}]+|(?R))*+}', '', x, perl=TRUE)
# [1] "salwdsqq"https://stackoverflow.com/questions/30532491
复制相似问题