获得左括号的位置

时间:2017-01-03 15:16:20

标签: java regex

我需要向后分析一些代码并且我试图获得左括号的位置,问题是在括号内有更多的括号,例如:

    customerPairs.leftOuterJoin(
            sc.textFile("C:/path/transactions_data.txt")
              .mapToPair(new PairFunction<String, String, String>() {
                    public Tuple2<String, String> call(String s) {
                        String[] transactionSplit = s.split(",");
                        return new Tuple2<String, String>(transactionSplit[2], transactionSplit[3]+","+transactionSplit[1]);
                        }
                    }))
            .groupByKey()

所以在读完groupByKey方法并找到第一个右括号之后我想知道它从哪里开始(例如,Eclipse就是这样)

1 个答案:

答案 0 :(得分:0)

蒂姆是对的。这不应该由正则表达式完成,而是由解析器完成。 (顺便说一下,我认为使用正则表达式是不可能的)。 使用解析器,您将主要有两个选项:

  1. 您扫描整个字符串/文件一次,并以某种方式连接所有括号对的位置。 (例如,通过使用堆栈:每个左括号将其位置推到此堆栈上,右括号只是弹出堆栈顶部并将其“注册”在一起,并将其自己的位置作为一对“)。

  2. 您获取想要了解合作伙伴的括号的位置,并向前或向后浏览代码(取决于您选择的括号类型)并添加每个括号(+1表示开头 - 1表示右括号)直到你遇到一个与你所选择的一个矛盾。

  3. 您应该使用哪一个取决于您的需求/应用。

    PS:请注意,如果你之间的字符串可能包含不成对的括号,你必须确保忽略这些字符串

    希望对你有帮助。