gpt4 book ai didi

r - 在 R 中提取括号中的文本

转载 作者:行者123 更新时间:2023-12-04 13:16:07 25 4
gpt4 key购买 nike

两个相关的问题。我有文本数据的向量,例如

"a(b)jk(p)"  "ipq"  "e(ijkl)"

并希望轻松地将其分成包含括号外文本的向量:
"ajk"  "ipq"  "e"

和一个包含括号内文本的向量:
"bp"   ""  "ijkl"

有什么简单的方法可以做到这一点吗?一个额外的困难是这些可能会变得非常大并且有大量(无限)括号。因此,我不能简单地在括号中“预先/发布”文本并需要一个更智能的解决方案。

最佳答案

括号外的文字

> x <- c("a(b)jk(p)"  ,"ipq" , "e(ijkl)")
> gsub("\\([^()]*\\)", "", x)
[1] "ajk" "ipq" "e"

括号内的文字
> x <- c("a(b)jk(p)"  ,"ipq" , "e(ijkl)")
> gsub("(?<=\\()[^()]*(?=\\))(*SKIP)(*F)|.", "", x, perl=T)
[1] "bp" "" "ijkl"
(?<=\\()[^()]*(?=\\))匹配括号内的所有字符,然后匹配以下 (*SKIP)(*F)使比赛失败。现在它尝试执行紧跟在 | 之后的模式。符号对剩余的字符串。所以点 .匹配所有尚未跳过的字符。用空字符串替换所有匹配的字符将只给出 Racket 内的文本。
> gsub("\\(([^()]*)\\)|.", "\\1", x, perl=T)
[1] "bp" "" "ijkl"

此正则表达式将捕获括号内的所有字符并匹配所有其他字符。 |. or part 有助于匹配除捕获的字符以外的所有剩余字符。因此,通过用组索引 1 中存在的字符替换所有字符,将为您提供所需的输出。

关于r - 在 R 中提取括号中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28955367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com