import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "([\\w]+)[ \\t]+=[ \\t](Solver[ \\t]*\\(([\\d.]+)[ \\t]*,[ \\t]*([\\d.]+)[ \\t]*,[ \\t]*([\\d.]+)[ \\t]*\\))\\n\\r?demo[ \\t]*\\(\\1\\.b[ \\t]*,[ \\t]*\\1\\.a[ \\t]*,[ \\t]*\\1\\.c[ \\t]*\\)";
final String string = "import math\n\n"
+ "class Solver(object):\n"
+ " def __init__(self, a, b, c):\n"
+ " self.a = a\n"
+ " self.b = b\n"
+ " self.c = c\n\n\n"
+ "def demo(b, a, c):\n"
+ " d = b ** 2 - 4 * a * c\n"
+ " if d >= 0:\n"
+ " disc = math.sqrt(d)\n"
+ " root1 = (- b + disc) / (2 * a)\n"
+ " root2 = (- b - disc) / (2 * a)\n"
+ " print(root1, root2)\n"
+ " return root1, root2\n"
+ " else:\n"
+ " raise Exception\n\n\n"
+ "s = Solver(2, 123, 0.025)\n"
+ "demo(s.b, s.a, s.c)";
final String subst = "$2\\.demo()";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
// The substituted value will be contained in the result variable
final String result = matcher.replaceAll(subst);
System.out.println("Substitution result: " + result);
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html