StackOverflow鼓励自己回答问题,所以我决定创建这篇文章来分享我最近发现的东西.
问题:在正则表达式中匹配任意嵌套的括号组,例如Java的java.util.regex,既不支持递归也不支持平衡组.即,匹配3个外部组:
(第一第二第三)))))))
这个练习纯粹是学术性的,因为我们都知道正则表达式不应该被用来匹配这些东西,正如Q-tips不应该被用来清理耳朵一样.
我想在括号内匹配一个字符串,如:
(i, j, k(1))
^^^^^^^^^^^^
该字符串也可以包含闭括号.如何在不编写解析器的情况下将它与Java中的正则表达式匹配,因为这只是我项目的一小部分.谢谢!
编辑:
我想寻找一个字符串块,并找到像u(i, j, k),u(i, j, k(1))或者只是u(<anything within this paired parens>)和他们更换到__u%array(i, j, k)和__u%array(i, j, k(1))我的Fortran语言翻译应用.
我需要找出第一个最外层(不是嵌套)括号索引.
例如
[]                         output: 0, 1
1[2]                       output: 1, 3
3[a2[c]]2[abc]3[cd]        output: 1, 7
我可以通过很多条件找到它,当前代码:
public static void main(String[] args) {
    String input = "3[a2[c]]2[abc]3[cd]ef";
    int first = 0;
    int second = 0;
    int count = 0;
    boolean found = false;
    for (int index = 0; index < input.length(); index++) {
        if (input.charAt(index) == '[') {
            count++;
            if (found == false) {
                found = true;
                first = index;
            }
        } else if (input.charAt(index) == ']') {
            count--;
            if (found && …