我在gradle文件任务中有以下语句,但是它提供了错误'要转义的字符缺失'执行时。
String contents = new File( 'settings/tomcat-config/catalina.bat' ).getText()
contents = contents.replaceAll('-Dappspace.home=[^\"]*','test');
似乎微不足道,但无法弄清楚问题。
答案 0 :(得分:0)
假设您的catalina.bat文件包含以下行:
set APP_HOME=-Dappspace.home="%CATALINA_BASE%\somedir"
然后你想在比赛中加入"
。换句话说,运行:
def contents = new File('catalina.bat').text
println contents.replaceAll('-Dappspace.home="([^"]+)"','test')
将打印:
set APP_HOME=test
然后跑步:
def contents = new File('catalina.bat').text
println contents.replaceAll(/(-Dappspace.home=")([^"]+)/, '$1test')
将打印:
set APP_HOME=-Dappspace.home="test"
我怀疑它更接近你想要的东西。如果您想替换文件内容,您可以这样做:
def file = new File(...)
file.text = file.text.replaceAll(...)
由于这是在gradle文件中,您可以使用gradle dsl project.file方法并在代码中将new File(...)
替换为file(...)
,这样就会为我们提供最终版本(假设您正在寻找替换文件内容中的字符串):
def f = file('catalina.bat')
f.text = f.text.replaceAll(/(-Dappspace.home=")([^"]+)/, '$1test')