Предполагая, что ваш файл 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')