R:解析嵌套括号

标签 r regex

我想使用 R 解析嵌套括号。不,这不是 JASON。我看过使用 perl、php 和 python 的示例,但我无法在 R 中使用任何东西。以下是一些数据的示例:

(a(a(a)(aa(a)a)a)a)((b(b)b)b)(((cc)c)c)

我想根据三个父括号将此字符串拆分为三个单独的字符串:
(a(a(a)(aa(a)a)a)a)

((b(b)b)b)

(((cc)c)c)

我面临的挑战之一是在括号内的子括号对总数以及连续左括号或右括号的数量方面缺乏一致的结构。注意数据中带有 Bs 和 Cs 的连续左括号。这使得尝试使用正则表达式变得非常困难。此外,给定括号内的数据将有许多与其他括号相同的字符,因此不可能查找所有“a”或“b”——我编造了这些数据以帮助人们更好地看到三个括号。

基本上我正在寻找一个识别括号的函数。换句话说,一个函数可以找到不包含在括号中的括号,并为给定的字符串返回 this 的所有实例。

有任何想法吗?我很感激你的帮助。

最佳答案

这里是直接改编自 Regex Recursion\\((?>[^()]|(?R))*\\) :

s = "(a(a(a)(aa(a)a)a)a)((b(b)b)b)(((cc)c)c)"
matched <- gregexpr("\\((?>[^()]|(?R))*\\)", s, perl = T)
substring(s, matched[[1]], matched[[1]] + attr(matched[[1]], "match.length") - 1)
# [1] "(a(a(a)(aa(a)a)a)a)" "((b(b)b)b)"          "(((cc)c)c)"   

关于R:解析嵌套括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41749058/

相关文章:

java - 用于在字符串中用引号引起来时删除逗号的正则表达式

r - 计算向量中的对数

r - 复制 data.tables 列表

javascript - 此 cookie 值的正则表达式?

c# - 正则表达式匹配文件路径字符串的数字结尾

Python:使用列表中的分隔符拆分字符串

regex - 区域设置感知 Perl 正则表达式(匹配单词边界)

r - 将函数应用于列表中的列表

r - 在 R 中按字母顺序排列字母数字列名称

r - 饼图将其文本置于彼此之上