java - 无法将多个正则表达式模式添加到数组列表中
问题描述
我的目标是在找到模式时给出一个字符串,然后将它们添加到单独的数组中。
例如
我的测试字符串是
String input = "this is a sentence continents=Asia end continents=Europe end continents=Africa end continents=Australia end continents=South America end continents=North America end continents=Antartica end";
结果是
[continents, Asia, continents, Europe, continents, Africa, continents, Australia, continents, South America, continents, North America]
我想要的是将它们添加到单独的数组中,如下所示
[continents, Asia], [continents, Europe], [continents, Africa], [continents, Australia], [continents, South America], [continents, North America], [continents, Antartica]
以下是我的代码:
list = new ArrayList<>();
Pattern pattern = Pattern.compile("continents=(.+?) end ");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
list.add("continents");
value = matcher.group(1);
list.add(value);
}
任何帮助将不胜感激。谢谢!
解决方案
如果我正确理解您的问题,那么您就快到了。您只需要将每个匹配项添加到不同的列表中,然后将该列表添加到外部列表中:
List<List<String>> list = new ArrayList<>();
Pattern pattern = Pattern.compile("continents=(.+?) end ");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
List<String> innerList = new ArrayList<>();
innerList.add("continents");
String value = matcher.group(1);
innerList.add(value);
list.add(innerList);
}
推荐阅读
- angular - Angular 2 - 如何让 router.navigate 导致 canDeactivate 触发
- animation - love2d 连接线段对象以制作画线的铅笔工具
- c - 如何在 shell 中进行流水线操作
- reactjs - 如何知道反应原生远程调试的错误在哪里?
- html - 默认情况下,引导导航菜单在移动设备中不折叠
- ios - NSCameraUsageDescription 在 Xcode 9 中不起作用
- r - stringr:通过字符向量提供模式替换字符串
- segmentation-fault - PKCS#11 API C_FindObjectsInit 上 CKO_SECRET_KEY AES 密钥段错误
- android - Firebase 库/依赖项问题
- azure - 使用 856 源循环 Functoid