正则表达式在java中重写输入字符串

正则表达式在java中重写输入字符串,java,regex,Java,Regex,我有一个输入查询字符串,我想把它改写成下面的格式 输入: select sum(spend) from test where time = date_add('2008-12-31', 1) and product_name = 'test123'; 重写: select sum(spend) from test where time = date_add('2008-12-31', interval 1 day) and product_name = 'test123'; 我想将“日期添加

我有一个输入查询字符串,我想把它改写成下面的格式

输入:

select sum(spend) from test where time = date_add('2008-12-31', 1) and product_name = 'test123';
重写:

select sum(spend) from test where time = date_add('2008-12-31', interval 1 day) and product_name = 'test123';
我想将“日期添加('2008-12-31',1)”改写为“日期添加('2008-12-31',间隔1天)”

请告诉我如何用Java实现它

mySql.replaceAll("date_add\\(('[^']*'), (\\d+)\\)", "date_add($1, interval $2 day")
我会做一个合理的工作。它对空白位置过于敏感,并假定为文本日期字符串,如果SQL中有包含SQL的字符串文本,则会很危险,但这应该可以让您开始

使用regexs重写源代码容易出错,因此在提交之前请确保检查所做更改的差异。

String myNewString=“从测试中选择sum(spend),其中time=date\u add('2008-12-31',interval 1 day)和product\u name='test123';”
此正则表达式
\(.*\s*([0-9]+)\
将与
()
之间的数字匹配。
final String query = "select sum(spend) from test where time = date_add('2008-12-31', 1) and product_name = 'test123'";
final String newQuery = query.replaceAll("date_add\\((.*),\\s*([0-9]+)\\)", "date_add($1, interval $2 day)");