| | |
| | | package com.example.firstapp.entity |
| | | |
| | | data class Rule(var type: String,var content: String ,var reg: String) { |
| | | import java.time.LocalDateTime |
| | | |
| | | // 在 Rule 类中定义提取方法 |
| | | fun extractCodeFromMessage(message: String): String? { |
| | | // 如果 message 包含 content |
| | | if (message.contains(content)) { |
| | | // 使用 reg 作为正则表达式进行匹配 |
| | | val regex = reg.toRegex() |
| | | val matchResult = regex.find(message) |
| | | return matchResult?.value // 如果找到匹配的内容,则返回 |
| | | } |
| | | return null // 如果不匹配,返回 null |
| | | class Rule( |
| | | val type: String, |
| | | val content: String, |
| | | val pattern: String |
| | | ) { |
| | | // 添加伴生对象存储多个正则表达式模式 |
| | | companion object { |
| | | private val BANK_PATTERNS = mapOf( |
| | | "招商银行" to listOf( |
| | | // 第一种格式:账单¥xxx,还款日MM月dd日 |
| | | "账单[¥¥](\\d+\\.?\\d*).*还款日(\\d{2})月(\\d{2})日", |
| | | // 第二种格式:账单金额xxx,还款日MM月dd日 |
| | | "账单金额[::](\\d+\\.?\\d*).*还款日[::](\\d{2})月(\\d{2})日", |
| | | // 可以继续添加其他格式... |
| | | ), |
| | | "中国银行" to listOf( |
| | | "账单金额[::](\\d+\\.?\\d*).*还款日[::](\\d{1,2})日", |
| | | // 可以添加其他格式... |
| | | ), |
| | | // 其他银行的模式... |
| | | ) |
| | | } |
| | | |
| | | fun extractCodeFromMessage(message: String): String? { |
| | | if (type == "财务") { |
| | | // 获取该银行的所有正则表达式模式 |
| | | val patterns = BANK_PATTERNS[content] ?: listOf(pattern) |
| | | |
| | | // 尝试每一个正则表达式 |
| | | for (pat in patterns) { |
| | | val regex = pat.toRegex() |
| | | val matchResult = regex.find(message) |
| | | |
| | | matchResult?.let { |
| | | if (it.groupValues.size > 1) { |
| | | return it.groupValues[1].replace("[¥¥]".toRegex(), "") |
| | | } |
| | | } |
| | | } |
| | | return null |
| | | } else { |
| | | // 非财务类型的处理保持不变 |
| | | val regex = pattern.toRegex() |
| | | val matchResult = regex.find(message) |
| | | return matchResult?.value |
| | | } |
| | | } |
| | | |
| | | fun extractDueDate(message: String): String? { |
| | | if (type != "财务") return null |
| | | |
| | | val patterns = BANK_PATTERNS[content] ?: listOf(pattern) |
| | | |
| | | for (pat in patterns) { |
| | | val regex = pat.toRegex() |
| | | val matchResult = regex.find(message) |
| | | |
| | | matchResult?.let { |
| | | when { |
| | | content == "招商银行" && it.groupValues.size > 3 -> { |
| | | return "${it.groupValues[2]}月${it.groupValues[3]}日" |
| | | } |
| | | it.groupValues.size > 2 -> { |
| | | return it.groupValues[2] + "日" |
| | | } |
| | | |
| | | else -> {} |
| | | } |
| | | } |
| | | } |
| | | return null |
| | | } |
| | | } |