java - Java,获取与输入部分匹配的模式部分
问题描述
正如标题所说,我想获得与输入部分匹配的模式部分;例子:
模式:aabb 输入字符串:“aa”
此时,我将使用 Matcher 类的 hitEnd() 方法来确定模式是否部分匹配,如this answer所示,但我也想找出“aabb”中的“aa”是匹配的。有没有办法在java中做到这一点?
解决方案
这可能很脏,但我们走吧……
一旦你知道一些 string hitEnd
,做第二次处理:
- 从字符串中删除最后一个字符
- 使用原始正则表达式搜索
- 如果 It
matches
,那么你就结束了,你有字符串的一部分 - 如果没有,请转到 1 并重复整个过程,直到匹配
如果测试字符串可能很长,则性能可能会成为问题。因此,不要从最后一个位置到第一个位置,而是尝试搜索块。
例如,考虑一个 1,000 个字符的字符串:
- 测试 1000/2 个字符:1-500。对于这个例子,我们认为它匹配
- 测试前 500 个字符 + 500/2(1-750 个位置)。对于这个例子,我们认为它不匹配。所以我们知道仓位一定要放在500到750之间
- 现在测试 1-625 ((750+500)/2)... 如果匹配,则位置必须存在于 625-750 之间。如果不匹配,它必须是从 500 到 625
- ...
推荐阅读
- assembly - 从装配中另一段中存在的矩阵单元读取
- php - 如何从 gitlab-ci.yml 将环境导出到 PHP 文件中
- c++ - 如何为新项目使用仪器驱动程序和头文件/静态库
- ios - 使用自定义 UITableIView 时无法将具有标识符的单元格出列
- tfs - DevOps Server 2019.0.1(Azure DevOps 错误 - TF30063:您无权访问 tfs。)
- docker - 如何在docker中覆盖cmd?
- ios - 如何使用 Firebase 动态链接在 iOS 中配置深度链接?
- c++ - 为什么向量会发生这种情况
- java - 为什么 Optional.of().ifPresent() 会在 ifPresent() 内部创建一个 Optional?
- c - struct 成员上的 free() 仅在 Debug 中导致 Hardfault