pull/32/head
parent
afd4b709a0
commit
4dfe1a6774
@ -1,12 +1,64 @@ |
|||||||
package io.legado.app.model.analyzeRule |
package io.legado.app.model.analyzeRule |
||||||
|
|
||||||
object AnalyzeByRegex { |
import java.util.* |
||||||
|
import java.util.regex.Pattern |
||||||
|
import kotlin.collections.HashMap |
||||||
|
import kotlin.collections.List |
||||||
|
import kotlin.collections.Map |
||||||
|
import kotlin.collections.arrayListOf |
||||||
|
import kotlin.collections.set |
||||||
|
|
||||||
fun getElement() { |
object AnalyzeByRegex { |
||||||
|
|
||||||
|
fun getElement(res: String, regs: Array<String>, index: Int = 0): Map<String, String>? { |
||||||
|
var vIndex = index |
||||||
|
val resM = Pattern.compile(regs[vIndex]).matcher(res) |
||||||
|
if (!resM.find()) { |
||||||
|
return null |
||||||
|
} |
||||||
|
// 判断索引的规则是最后一个规则 |
||||||
|
return if (vIndex + 1 == regs.size) { |
||||||
|
// 新建容器 |
||||||
|
val info = HashMap<String, String>() |
||||||
|
for (groupIndex in 1 until resM.groupCount()) { |
||||||
|
info["$$groupIndex"] = resM.group(groupIndex) |
||||||
|
} |
||||||
|
info |
||||||
|
} else { |
||||||
|
val result = StringBuilder() |
||||||
|
do { |
||||||
|
result.append(resM.group()) |
||||||
|
} while (resM.find()) |
||||||
|
getElement(result.toString(), regs, ++vIndex) |
||||||
|
} |
||||||
} |
} |
||||||
|
|
||||||
fun getElements() { |
fun getElements(res: String, regs: Array<String>, index: Int = 0): List<Map<String, String>> { |
||||||
|
var vIndex = index |
||||||
|
val resM = Pattern.compile(regs[vIndex]).matcher(res) |
||||||
|
if (!resM.find()) { |
||||||
|
return arrayListOf() |
||||||
|
} |
||||||
|
// 判断索引的规则是最后一个规则 |
||||||
|
if (vIndex + 1 == regs.size) { |
||||||
|
// 创建书息缓存数组 |
||||||
|
val books = ArrayList<Map<String, String>>() |
||||||
|
// 提取书籍列表 |
||||||
|
do { |
||||||
|
// 新建容器 |
||||||
|
val info = HashMap<String, String>() |
||||||
|
for (groupIndex in 1 until resM.groupCount()) { |
||||||
|
info["$$groupIndex"] = resM.group(groupIndex) |
||||||
|
} |
||||||
|
books.add(info) |
||||||
|
} while (resM.find()) |
||||||
|
return books |
||||||
|
} else { |
||||||
|
val result = StringBuilder() |
||||||
|
do { |
||||||
|
result.append(resM.group()) |
||||||
|
} while (resM.find()) |
||||||
|
return getElements(result.toString(), regs, ++vIndex) |
||||||
|
} |
||||||
} |
} |
||||||
} |
} |
Loading…
Reference in new issue