diff --git a/src/main/java/cn/van/business/util/JDUtil.java b/src/main/java/cn/van/business/util/JDUtil.java index dc082a3..3fe9412 100644 --- a/src/main/java/cn/van/business/util/JDUtil.java +++ b/src/main/java/cn/van/business/util/JDUtil.java @@ -2796,10 +2796,9 @@ public class JDUtil { return null; } - // 正则表达式会忽略换行符,只关注◉和数字的位置关系 - // 即使◉和价格之间有换行也能匹配 - // 更新正则表达式以处理包含┞(\u239C)字符的情况 - Pattern pattern = Pattern.compile("\\u25C9\\s*(?:\\u239C)?\\s*([\\d.]+)\\s*\\uD83D\\uDCB0?"); + // 更健壮的正则表达式,可以处理各种空白字符和中间的其他字符 + // 使用[\s\S]*?非贪婪匹配可能存在于价格前的任何字符 + Pattern pattern = Pattern.compile("\\u25C9[\\s\\S]*?([\\d.]+)\\s*\\uD83D\\uDCB0?"); Matcher matcher = pattern.matcher(input); @@ -2815,8 +2814,8 @@ public class JDUtil { } } - // fallback处理 - Pattern fallbackPattern = Pattern.compile("\\u25C9\\s*(?:\\u239C)?\\s*([\\d.]+)"); + // fallback处理 - 更宽松的匹配 + Pattern fallbackPattern = Pattern.compile("\\u25C9[\\s\\S]*?([\\d.]+)"); Matcher fallbackMatcher = fallbackPattern.matcher(input); if (fallbackMatcher.find()) { logger.info("parsePrice第二次正则匹配到的价格{}", fallbackMatcher.group(1));