Groovy中的replaceFirst抛出非法组引用

Ska*_*rab 0 regex groovy

我有以下代码:

String newStr = "aa\$";
print newStr;
print "wwwww ? eeee".replaceFirst("\\?", "'${newStr}'"); // (3)
Run Code Online (Sandbox Code Playgroud)

我一直在 - 第3行 - 得到以下错误:

Caught: java.lang.IllegalArgumentException: Illegal group reference
    at com.example.MyBuilder.main(MyBuilder.groovy:196)
Run Code Online (Sandbox Code Playgroud)

看起来replaceFirst忽略了$被转义.我怎么能让我的代码运行?有人遇到过这样的错误吗?

tim*_*tes 6

第一

String newStr == "aa\$"
Run Code Online (Sandbox Code Playgroud)

应该

String newStr = "aa\$"
Run Code Online (Sandbox Code Playgroud)

然后,因为您使用普通字符串来声明正则表达式,所以需要双重转义美元符号:

String newStr = "aa\\$"
Run Code Online (Sandbox Code Playgroud)

或者,使用slashy字符串:

String newStr = /aa\$/
Run Code Online (Sandbox Code Playgroud)