From 884585065a2fa70850452c1d1f2f5232873babdc Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 30 Jul 2021 15:15:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/model/analyzeRule/AnalyzeRule.kt | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt index 47426834b..5798abb7d 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt @@ -337,20 +337,25 @@ class AnalyzeRule(val ruleData: RuleDataInterface) : JsExtensions { * 正则替换 */ private fun replaceRegex(result: String, rule: SourceRule): String { + if (rule.replaceRegex.isEmpty()) return result var vResult = result - if (rule.replaceRegex.isNotEmpty()) { - vResult = if (rule.replaceFirst) { - kotlin.runCatching { - vResult.replaceFirst(rule.replaceRegex.toRegex(), rule.replacement) - }.getOrElse { - vResult.replaceFirst(rule.replaceRegex, rule.replacement) - } - } else { - kotlin.runCatching { - vResult.replace(rule.replaceRegex.toRegex(), rule.replacement) - }.getOrElse { - vResult.replace(rule.replaceRegex, rule.replacement) + vResult = if (rule.replaceFirst) { + kotlin.runCatching { + val pattern = Pattern.compile(rule.replaceRegex) + val matcher = pattern.matcher(vResult) + if (matcher.find()) { + matcher.group(0)!!.replaceFirst(rule.replaceRegex.toRegex(), rule.replacement) + } else { + "" } + }.getOrElse { + vResult.replaceFirst(rule.replaceRegex, rule.replacement) + } + } else { + kotlin.runCatching { + vResult.replace(rule.replaceRegex.toRegex(), rule.replacement) + }.getOrElse { + vResult.replace(rule.replaceRegex, rule.replacement) } } return vResult