gpt4 book ai didi

java - 需要从查询中单独获取参数作为数组列表返回参数

转载 作者:太空宇宙 更新时间:2023-11-04 10:14:06 24 4
gpt4 key购买 nike

我编写了程序,它将查询作为输入并单独获取参数作为数组列表返回(使用正则表达式模式拆分)(输出)但如果我们添加喜欢它也会来的话,我也会得到 () 。

输入

SELECT * FROM some_table 
WHERE some_column1 = ‘%(some_parameter_1)%’ and
some_column2=’%(some_parameter_2)%’ and
some_column3=’%(some_parameter_3)%’;`

输出

包含以下元素的数组列表:

some_parameter_1
some_parameter_2
some_parameter_3
<小时/>
String patternString = "%";
Pattern pattern = Pattern.compile(patternString);

String[] split = pattern.split(query);

System.out.println("split.length = " + split.length);

for(String element : split){
System.out.println("element = " + element);
a1.add(element);
}

int n = a1.size();
for(int j =1;j <= n; j=j+2){
params.add(a1.get(j));
}
System.out.println("\n List of Parameters "+params);
/* for(int j =1;j <= 7; j=+1)
System.out.println(a1.get(j)); */
return params;
}

如何在正则表达式中使用match.result?这似乎没有效果......或任何其他方法来解决它。

我需要将参数单独包含在 %(some-param1)% 中作为数组列表返回。

提前致谢。

最佳答案

您的模式以及您的方法不会引导您找到解决方案,因为使用拆分,您将在模式上进行拆分。相反,您想要匹配模式并提取匹配的模式。

为此,我们可以使用java中提供的PatternMatcher类。我使用的模式(%\\()(.*?)(\\)%)。注意已添加 \\ 用于转义

它分为三个部分

1) (%\\() 搜索以 %(

开头的字符串

2) (.*?) 第一个字符之后的所有字符都匹配

3) (\\)%) 匹配直到找到 )% 字符。

下面是您的示例的示例工作代码。因为我们想要提取 %(...)% 之间的内容(即第二部分),所以我使用了 group(2)

因此 matcher.group(1) 将匹配 %(matcher.group(2) 将匹配 some_parameter_1matcher.group(3) 将匹配 )%。在循环中执行此操作将解析整个字符串并给出 ArrayList 中的所有三个参数

public static void main(String[] args) {
String input = "SELECT * FROM some_table WHERE some_column1 = ‘%(some_parameter_1)%’ and some_column2=’%(some_parameter_2)%’ "
+ "and some_column3=’%(some_parameter_3)%’;";
Pattern pattern = Pattern.compile("(%\\()(.*?)(\\)%)");
Matcher matcher = pattern.matcher(input);
List<String> parameterList = new ArrayList<>();
while (matcher.find()) {
parameterList.add(matcher.group(2));
}
System.out.println(parameterList);
}

关于java - 需要从查询中单独获取参数作为数组列表返回参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51935474/

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