Я должен проанализировать классы JAVA с PHP. Все java-классы реализуют мой интерфейс, поэтому в классе всегда есть соответствующая мне функция. Это выглядит как:
public void init(Something driver, Parameters params) { ... }
Я придумал следующее регулярное выражение:
/public\s+void\s+init\s*\(\s*Something\s+(\w+)\s*,\s*Parameters\s+(\w+)\s*\)\s*\{([^\}]+)\}\s*/
Он работает нормально, за исключением ситуаций, когда где-то внутри тела моей функции есть символ «}». Есть ли способ справиться с этими ситуациями?
Попробуйте следующее регулярное выражение,
public\s+void\s+init\s*\(\s*Something\s+(\w+)\s*,\s*Parameters\s+(\w+)\s*\)\s*\{((?:[^{}]*(?:{[^{}]*})?)+[^{}]*)\}\s*
Других решений пока нет …