From e4c75cd54415053247610ef370b29c6d4a6688f8 Mon Sep 17 00:00:00 2001 From: huababa1 <2037205722@qq.com> Date: Wed, 27 Aug 2025 00:42:46 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BF=AE=E6=94=B9=E3=80=91msyql?= =?UTF-8?q?=E5=85=B3=E9=94=AE=E5=AD=97=20=E7=A9=BA=E6=A0=BC=E6=8D=A2?= =?UTF-8?q?=E8=A1=8C=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exam/service/mysql/IMysqlLocalServiceImpl.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/exam/exam/service/mysql/IMysqlLocalServiceImpl.java b/src/main/java/com/example/exam/exam/service/mysql/IMysqlLocalServiceImpl.java index 97f35ac..33e67ee 100644 --- a/src/main/java/com/example/exam/exam/service/mysql/IMysqlLocalServiceImpl.java +++ b/src/main/java/com/example/exam/exam/service/mysql/IMysqlLocalServiceImpl.java @@ -1504,7 +1504,19 @@ public class IMysqlLocalServiceImpl implements IMysqlLocalService { if (keywordValue != null && !keywordValue.isEmpty() && !matchedKeywords.contains(keywordValue)) { // 使用正则,确保是完整单词(字段)匹配 String regex = keywordValue; - if (sql.contains(regex)) { + // 关键字标准化:连续空白替换成单空格,去掉首尾空格,并转小写 + String regexKeyword = keywordValue.replaceAll("\\s+", " ").trim().toLowerCase(); + + // SQL标准化:连续空白替换成单空格,去掉首尾空格,并转小写 + String cleanSql = sql.replaceAll("\\s+", " ").trim().toLowerCase(); + + // 使用正则匹配单词边界 + + String patternStr = "(?i)(^|[^\\w])" + Pattern.quote(regexKeyword) + "($|[^\\w])"; + Pattern pattern = Pattern.compile(patternStr); + Matcher matcher = pattern.matcher(cleanSql); + + if (matcher.find()) { try { totalScoreRate += Integer.parseInt(keyword.getScoreRate()); judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【✅】【关键字】 【" + regex + "】 " );