update user_third_info SET id = 'cc9aacc2-fbb4-4979-8044-27456a56a0a6', user_uid = 'Lebron.jie', dingtalk_account = '8208208821', enterprise_wechat_account = 'zhaowenbo.zhao1', wechat_account = '8208208820', modify_datetime = 2023-05-30T13:18:56.728, modify_user = 'Lebron.jie' where id = 'cc9aacc2-fbb4-4979-8044-27456a56a0a6'private String extractTable(String sql) { Pattern pattern = Pattern.compile("^update\s+(\w+)\s+SET"); Matcher matcher = pattern.matcher(sql); if (matcher.find()) { return matcher.group(1); } return null; }为什么拿不到表名
时间: 2024-02-20 22:00:05 浏览: 121
无人驾驶车辆模型预测控制matlab代码.zip_AACC-191684-FEABE_MATLAB无人驾驶_matlab车辆_无
5星 · 资源好评率100%
你的代码中正则表达式的斜杠被转义成了双反斜杠,所以它并不能正确匹配 "update" 和 "SET" 之间的表名。正确的正则表达式应该是 `^update\\s+(\\w+)\\s+SET`,即只需要在每个斜杠前面加上一个反斜杠即可。修改后的代码如下:
```
private String extractTable(String sql) {
Pattern pattern = Pattern.compile("^update\\s+(\\w+)\\s+SET");
Matcher matcher = pattern.matcher(sql);
if (matcher.find()) {
return matcher.group(1);
}
return null;
}
```
使用该方法解析上述 SQL 语句,可以正确得到表名 "user_third_info"。
阅读全文