我想使用 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/