我有一个SQL文件,我想用别的东西替换一个单词。但是这里的问题是,我会根据前两个单词和下一个单词的出现来替换这个单词。
例如,如果SQL文件包含"INSERT INTOtable_nameVALUES"
,那么我只想在表名中添加一个括号并将其大写。
因此,在更改之后,它将是"INSERT INTO[TABLE_NAME]VALUES"
。
我尝试过使用FileInputStream
和FileOutputStream
,但我发现它在我的情况下可能效率不高。该文件有很多INSERT语句。
请为此提出一些有效的想法。
您可以使用Pattern
与这个正则表达式(. *? \ . *? \ )(. *?)( \s.*)
或((.*?\\s){2})(.*?)(\\s.*)
像这样
String query = "INSERT INTO table_name VALUES";
Pattern pattern = Pattern.compile("(.*?\\s+.*?\\s+)(.*?)(\\s.*)");
Matcher matcher = pattern.matcher(query);
while (matcher.find()) {
query = matcher.group(1) +
String.format("[%s]", matcher.group(2).toUpperCase()) +
matcher.group(3);
}
System.out.println(query);
输出
INSERT INTO [TABLE_NAME] VALUES
详情:
(. *? \s . *? \s)
匹配前两个词(. *?)
匹配表名(\s.*)