gpt4 book ai didi

java - 如何使用 RegExp 将一个字符串替换为另一个字符串,并且替换的字符串将包含第一个字符串的参数

转载 作者:行者123 更新时间:2023-11-30 03:05:51 25 4
gpt4 key购买 nike

我有一个字符串

String SQL = "SELECT POSITION('Bengal' IN STRING) from delivery";

我想用此字符串 INSTR(STRING,'Bengal') 替换 SQL 字符串中的 POSITION() 函数。在 SQL 字符串“Bengal”的 POSITION 函数中,STRING 不是固定值,它会根据用户要求而更改,但 POSITION,左大括号“(”,IN 和右大括号“)”是静态的。使用正则表达式的最终输出必须如下所示。

String SQL ="SELECT INSTR(STRING,'Bengal') from delivery";

因此,在字符串中,如果重复两次,则必须将两次替换为同一个字符串 SQL 中相应的参数。任何帮助将不胜感激。

最佳答案

在 Java 中,使用此正则表达式:

SQL = SQL.replaceAll("POSITION\\((.*?) IN ([A-Z]+)\\)", "INSTR($2, $1)");

但是请注意,它仅适用于输入字符串的简单情况,如果第一个参数是某个表达式,而第二个参数是更复杂的东西,则它可能不起作用。它甚至适用于查询中的多个 POSITION 表达式,例如:

String SQL = "SELECT POSITION('Bengal''s something IN d' IN STRING), POSITION('text' IN STRINGX) from delivery";
SQL = SQL.replaceAll("POSITION\\((.*?) IN ([A-Z]+)\\)", "INSTR($2, $1)");
// SQL now contains: "String SQL = "SELECT INSTR(STRING, 'Bengal''s something IN d'), INSTR(STRINGX, 'text') from delivery";"

如果你想完全正确地替换函数调用,请使用适当的sqlparser。过去我用过 JSQLParser 。它甚至可以通过嵌套的 POSITION 调用将子选择处理为 POSITION 参数。

关于java - 如何使用 RegExp 将一个字符串替换为另一个字符串,并且替换的字符串将包含第一个字符串的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34784776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com