From 45ea241071a22ad002d276b4bd31263438f28093 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8D=92?= Date: Thu, 30 Oct 2025 20:46:43 +0800 Subject: [PATCH] 1 --- .../main/java/com/ruoyi/jarvis/util/LineReportParser.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ruoyi-system/src/main/java/com/ruoyi/jarvis/util/LineReportParser.java b/ruoyi-system/src/main/java/com/ruoyi/jarvis/util/LineReportParser.java index 2d19402..e0a0aef 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/jarvis/util/LineReportParser.java +++ b/ruoyi-system/src/main/java/com/ruoyi/jarvis/util/LineReportParser.java @@ -24,6 +24,8 @@ public class LineReportParser { private static final Pattern UJD_AND_PRICE_PATTERN = Pattern.compile("(?i)https?://[^\\s]*u\\.jd\\.com/[^\\s]+\\s+\\b(\\d{1,6}(?:\\.\\d{1,2})?)\\b"); // 行内价格通用匹配(支持¥/💰/纯数字),用于邻近行回溯 private static final Pattern PRICE_NEAR_PATTERN = Pattern.compile("[¥💰]?\\s*([0-9]{1,6}(?:\\.[0-9]{1,2})?)"); + // “不高于”价格匹配 + private static final Pattern NOT_HIGHER_PATTERN = Pattern.compile("不高于\\s*([0-9]{1,6}(?:\\.[0-9]{1,2})?)"); /** * 从线报消息中提取所有京东链接 @@ -126,6 +128,12 @@ public class LineReportParser { price = parsePrice(rich.group(1)); break; } + // 其次匹配“不高于 xxxx” + Matcher nh = NOT_HIGHER_PATTERN.matcher(prev); + if (nh.find()) { + price = parsePrice(nh.group(1)); + break; + } Matcher any = PRICE_NEAR_PATTERN.matcher(prev); if (any.find()) { price = parsePrice(any.group(1));