gpt4 book ai didi

java - Extract 通过正则表达式连接字符串中的变量

转载 作者:行者123 更新时间:2023-11-30 07:45:22 25 4
gpt4 key购买 nike

我目前正在从事一个数据挖掘项目。我必须阅读 C# 源代码,并且必须找到连接 SQL 语句的位置。我真正想要的是获取连接字符串变量名称的名称。

示例:

stat = "SELECT * FROM CUSTOMER c WHERE c.name ='" + name + "' AND c.address = " + address;

我要提取的是

姓名、地址

我通过以下正则表达式实现了这一点:

(?<=[\+])\s*(?<=[^\"])(\.|_|[a-zA-Z]|\(\))+(?<=[^\"])\s*(?=\s*\+*)

但是以下情况就会出现问题。

stat = name + "' AND c.address = " + address;

以下语句不采用名称变量。问题是从语句中获取所有变量。

最佳答案

正则表达式并不是包治百病的 Elixir ,在这种情况下,我相信只需拆分包含查询字符串的代码行即可获得更好的效果:

String line = "stat = \"SELECT * FROM CUSTOMER c WHERE c.name ='\" + name + \"' AND c.address = \" + address;";

// spilt on the + symbol, and remove the ending semicolon
String[] parts = line.substring(0, line.length()-1).split("\\+");

for (String part : parts) {
// variables will not be contained in quotation marks
if (!part.contains("\"")) {
System.out.println(part.trim());
}
}

输出:

name
address

请注意,您可能需要添加额外的逻辑来确定给定的代码行是否包含 SQL 查询。在这种情况下,您可以尝试类似 line.contains("SELECT") 的方法,它将匹配所有 SELECT 语句。可以对其进行扩展以匹配您期望在代码中看到的各种 SQL 表达式。

关于java - Extract 通过正则表达式连接字符串中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34012631/

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