From 6cf6e9575191ff2b033977c18087295e8b4421dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E6=AC=A7=EF=BC=88=E6=9E=97=E5=B9=B3=E5=87=A1?= =?UTF-8?q?=EF=BC=89?= Date: Fri, 8 Aug 2025 13:54:21 +0800 Subject: [PATCH] 1 --- src/main/java/cn/van/business/util/JDUtil.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/cn/van/business/util/JDUtil.java b/src/main/java/cn/van/business/util/JDUtil.java index 94bf9b1..f6e03da 100644 --- a/src/main/java/cn/van/business/util/JDUtil.java +++ b/src/main/java/cn/van/business/util/JDUtil.java @@ -1450,7 +1450,7 @@ public class JDUtil { xbMessage.setTipOriginalMessage(message); xbMessage.setFromWxid(wxid); String firstLine = message.split("\n")[0]; - Double price = parsePrice(message); + Double price = parsePrice(message.trim()); xbMessage.setFirstLine(firstLine); xbMessage.setFirstPrice(price); xbMessage = xbMessageRepository.save(xbMessage); @@ -2795,15 +2795,14 @@ public class JDUtil { return null; } - // 优化正则:匹配◉后任意数字(含小数点),直到遇到💰或字符串结束 - // 增加对可能的符号变体的兼容 - Pattern pattern = Pattern.compile("\\u25C9([\\d.]+)\\s*\\uD83D\\uDCB0?"); + // 正则表达式会忽略换行符,只关注◉和数字的位置关系 + // 即使◉和价格之间有换行也能匹配 + Pattern pattern = Pattern.compile("\\u25C9\\s*([\\d.]+)\\s*\\uD83D\\uDCB0?"); Matcher matcher = pattern.matcher(input); if (matcher.find()) { try { String priceStr = matcher.group(1).trim(); - // 确保是有效的数字格式(至少一个数字,最多一个小数点) if (priceStr.matches("\\d+\\.?\\d*|\\d*\\.\\d+")) { return Double.parseDouble(priceStr); } @@ -2812,8 +2811,8 @@ public class JDUtil { } } - // 二次尝试:如果找不到完整符号对,尝试提取◉后面的第一个数字 - Pattern fallbackPattern = Pattern.compile("\\u25C9([\\d.]+)"); + // fallback处理 + Pattern fallbackPattern = Pattern.compile("\\u25C9\\s*([\\d.]+)"); Matcher fallbackMatcher = fallbackPattern.matcher(input); if (fallbackMatcher.find()) { try { @@ -2828,4 +2827,5 @@ public class JDUtil { return null; } + }