我有大量文件,其中包含带有匹配大括号的行。我不在乎括号是否匹配。
我想检查是否有任何大括号嵌套,通过检查在左括号之后哪个先出现 - 一个右括号或另一个左括号。我假设所有括号都匹配,并且每行最多有一个外括号。(即,[foo[bar]]
是一个有效的行,[foo][bar]
不是,因为第二个括号对没有嵌套)。
我可以使用这个问题从括号对中获取所有内容's/.*\[\([^]]*\)\].*/\1/g'
,但我不确定如何重新测试抓取的字符串以进行进一步匹配。
例如,给定以下字符串:
foo [ bar, [baz] ]
我认为我会采取的步骤是:
- 从左侧遍历,直到我看到一个左括号。(如果没有找到,忽略该行)。
- 从左大括号开始进行非贪婪搜索,直到遇到
[
或。]
如果[
,括号是嵌套的,所以返回该行。如果]
,
理想情况下,我想要一个sed
基于或 unix-tool 的解决方案,但其他解决方案是可以接受的(perl
例如)。任何帮助,将不胜感激。