Как сделать регулярное выражение, определяющее уровень вложенности циклов? Для программы, содержащей несколько вложенных циклов используя регулярные выражения определить уровень вложенности циклов. т.е. как оно работает: Скармливаем регулярке код:... for(var i=0;i<10;i++){ something(); if(){ .... } while(true){ for(var i=0;i!=3;i++){ ... } } } ... И она нам должна вернуть что вложенность 3. Программа написана на JAVA, соответственно она использует что-то типа:final Pattern pattern = Pattern.compile(regex); final Matcher matcher = pattern.matcher(string); while (matcher.find()) { i++; } Где i - количество совпадений вложенности Я так понимаю нам надо что-то типа(for|while){(*^})(if{*})(*^})(for|while) Но в регулярных выражениях я слабоват и написал глупость, нужна помощь :)
Для определения уровня вложенности циклов в программе можно использовать следующее регулярное выражение:
String regex = "(for|while|if)\\s*\\(.*?\\)\\s*\\{";Это регулярное выражение будет искать конструкции циклов и условий вида "for", "while" или "if" за которыми идут открывающие фигурные скобки.
Пример использования:
String string = "for(var i=0;i<10;i++){ something(); if(){...} while(true){for(var i=0;i!=3;i++){...}}}";Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(string);
int i = 0;
while (matcher.find()) {
i++;
}
System.out.println("Уровень вложенности циклов: " + i);
Этот код должен вывести уровень вложенности циклов в вашей программе. Надеюсь, это поможет вам решить вашу задачу!