java - 我想与正则表达式完全匹配 2 次
问题描述
我有类似这个字符串的东西。
XXXX^^^141409i1^^^XXXX。
我想匹配^
一组中的这 3 个,并且该组恰好匹配 2 次。我写了这个,但它似乎不起作用。
(?:(\^){3}){2}
编辑
我必须拆分它并提取中间的数字。关键是该组应该恰好由 3^
次和 2 次组成。如果第一组只有 1 个或 2 个^
,它将停止匹配。该字符串是用户输入,例如,如果他输入的字符串多于该字符串,XXXX^^^141409i1^^^XXXX^^^^XXXX
则它不应该匹配最后一组,只匹配前 2 个。(对不起,如果我太模棱两可了。)
编辑2
练习的重点是拆分字符串并获取中间的数字,我写了这一行,但问题是它匹配每个 ^^^,我只想精确匹配 2 次。
String[] split = s.split("(\\^){3}");
解决方案
如果我正确理解你想要什么,我希望这会对你有所帮助:
String input = "XXXX^^^141409i1^^^XXXX^^^^XXXX";
Pattern pattern = Pattern.compile(".*?\\^{3}(\\w+)\\^{3}");
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
System.out.println("The number in the middle: " + matcher.group(1));
}
输出:
The number in the middle: 141409i1
在这里你可以看到它是如何工作的:https ://regexr.com/51r9e
推荐阅读
- yaml - 如何修复 Jinja2 yml 缩进
- powershell - Power shell - 每 1 分钟发送一次电子邮件,直到提供输入
- sql-server - ConvertZone() 使用 TZDB SQL Server 区域支持返回 NULL
- concurrency - 何时将分片添加到分布式键/值存储
- mysql - 错误代码 1824 - 无法打开引用的表
- karate - 将 match contains 与条件逻辑一起使用
- javascript - 从套接字侦听器内部修改反应状态的正确方法是什么?
- visual-studio-code - VS代码如何合并两个文件在同一个项目中
- android - 将新的 NDK .so 文件部署到旧的 Android API
- javascript - 为什么最新的 iPhone 不喜欢我的 Javascript?