首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >移除手镯中的内容物

移除手镯中的内容物
EN

Stack Overflow用户
提问于 2015-05-29 22:42:22
回答 3查看 128关注 0票数 2

我们有一个免费的文本:

代码语言:javascript
复制
sal{del{rf}ghladfs}wds{w12rf}qq  

输出应为:

代码语言:javascript
复制
salwdsqq

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

EN

回答 3

Stack Overflow用户

发布于 2015-05-29 22:56:09

这在R中有效

代码语言:javascript
复制
string1 <- "sal{del{rf}ghla}dfs}wds{w12rf}qq"
string2 <- gsub("{[^{}}]*}", "", string1, perl = TRUE)
string3 <- gsub("{.*}", "", string2, perl = TRUE)
string3
票数 1
EN

Stack Overflow用户

发布于 2015-05-29 23:05:44

我认为无论你有平衡还是不平衡的括号,这都是可行的:

不平衡(如在Q中)

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

随机插入一个

代码语言:javascript
复制
x <- "sal{del{{rf}ghla}dfs}wds{w12rf}qq  "
paste0(gsub('\\w+}|[{} ]', '', strsplit(x, '\\{\\w+')[[1]]), collapse = '')
# [1] "salwdsqq"
票数 1
EN

Stack Overflow用户

发布于 2015-05-30 10:42:07

您可以使用递归正则表达式来完成此操作。

代码语言:javascript
复制
x <- 'sal{del{rf}{sfddfdffdf}ghladfs}wds{w12rf}qq'
gsub('{(?:[^{}]+|(?R))*+}', '', x, perl=TRUE)
# [1] "salwdsqq"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30532491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档