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 72869218a..a2fa29e03 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 @@ -427,7 +427,7 @@ class AnalyzeRule(val ruleData: RuleDataInterface) : JsExtensions { mode = Mode.XPath ruleStr } - ruleStr.length > 1 && ruleStr[0] in listOf('@','.',':','>','#','[') -> { + ruleStr.length > 1 && ruleStr[0] in ruleChar -> { //isJSON为真时,之后可能不是jsonPath,故提前判断 //XPath,Json已经提前判断了,故@开头即为默认规则,AnalyzeByJSoup会修剪开头的’@‘,故此处不必切片字符串 //#开头为根据id查元素,后续规则会切分##正则,故此处不必考虑##情况 @@ -570,7 +570,7 @@ class AnalyzeRule(val ruleData: RuleDataInterface) : JsExtensions { return ruleStr.startsWith("//") || ruleStr.startsWith("$.") || ruleStr.startsWith("$[") - || ruleStr.length > 1 && ruleStr[0] in listOf('@','.',':','>','#','*') + || ruleStr.length > 1 && ruleStr[0] in innerRuleChar } } @@ -646,6 +646,8 @@ class AnalyzeRule(val ruleData: RuleDataInterface) : JsExtensions { } companion object { + private val ruleChar = listOf('@','.',':','>','#','[') + private val innerRuleChar = listOf('@','.',':','>','#','*') private val putPattern = Pattern.compile("@put:(\\{[^}]+?\\})", Pattern.CASE_INSENSITIVE) private val evalPattern = Pattern.compile("@get:\\{[^}]+?\\}|\\{\\{[\\w\\W]*?\\}\\}", Pattern.CASE_INSENSITIVE)