我正在尝试用正则表达式将一些代码替换为另一代码。我正在使用Java,但我认为这与问题
无关String testString = "sb.Append(\"first string to append(1) \"); sb.Append(\"second string to append(2)\");";
Pattern appendPattern = Pattern.compile("\\s*(\\w+)\\.Append\\((.*)\\);");
Matcher appendMatcher = appendPattern.matcher(testString);
System.out.println(appendMatcher.replaceAll("[$1 appendString: $2];"));
我的预期结果是:
[sb appendString: "first string to append(1) "]; [sb appendString: "second string to append(2)"];
我得到的是:
[sb appendString "first string to append(1) "); sb.Append("second string to append(2)"];
在决定匹配结束时,.*
优先于\\)
。
我哪里错了?
答案 0 :(得分:2)
答案 1 :(得分:2)