如何在java正则表达式的帮助下忽略java字符串中动态单词的所有可能的大小写



我有一个示例查询为:

create table Temp as select col1,col2 from mydb;
create table Filter as select col1 from Temp;

在上面的字符串TempFilter在任何情况下都可以是。

即上部、下部、驼色或拨动式。

如何忽略所有可能的组合,如驼色大小写,切换临时表的大小写,并将其替换为字符串中的大小写。

以下是我尝试过的以下代码:这里的查询参数包含上述两个字符串,并用";"分隔。钥匙包含温度/过滤器。

public String replaceQuery(String query,String key){
StringBuffer sb = new StringBuffer();
String regx = "[a-zA-Z0-9]";
Pattern patt = Pattern.compile(regx);
String[] ss = query.split(";");
for(String str : ss){
Matcher mat = pattern.matcher(str);
while(mat.find()){
}
}
}

但我无法进一步了解如何删除单词Temp/Filter的所有大小写并将其替换为String。在这方面有人能帮我吗?

您可以使用PatternCASE_INSENSTIVE标志作为Pattern的一部分。

示例:

Pattern p = Pattern.compile(Pattern.quote("TEMP"), Pattern.CASE_INSENSITIVE);

下面是一个查询示例:

CREATE TABLE Temp AS SELECT col1,col2 from mydb;

其中单词CCD_ 4将被CCD_

注意key是如何设置为TEMP的,但并不重要

public static void main(String[] args) throws Exception {
String query = "CREATE TABLE Temp AS SELECT col1,col2 from mydb;";
String key = "TEMP";
String newKey = "MyTempTable";
Pattern p = Pattern.compile(Pattern.quote(key), Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(query);
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, newKey);
}
m.appendTail(sb);
String newQuery = sb.toString();
System.out.println(newQuery);
}

输出:

CREATE TABLE MyTempTable AS SELECT col1,col2 from mydb;

相关内容

  • 没有找到相关文章