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 + "】 " );