Java 无法将多个正则表达式模式添加到数组列表中

Java 无法将多个正则表达式模式添加到数组列表中,java,arrays,regex,arraylist,regex-group,Java,Arrays,Regex,Arraylist,Regex Group,我的目标是在找到一个模式时,给一个字符串,然后将它们添加到单独的数组中 比如说 我的测试字符串是 String input=“这是一句话,大陆=亚洲端大陆=欧洲端大陆=非洲端大陆=澳大利亚端大陆=南美端大陆=北美端大陆=安塔提卡端” 结果是 [大陆、亚洲、大陆、欧洲、大陆、非洲、大陆、澳大利亚、大陆、南美、大陆、北美] 我想要的是将它们添加到单独的数组中,如下所示 [亚洲大陆],[欧洲大陆],[非洲大陆],[澳大利亚大陆],[南美洲大陆],[北美大陆],[安塔提卡大陆] 以下是我的代码: lis

我的目标是在找到一个模式时,给一个字符串,然后将它们添加到单独的数组中

比如说

我的测试字符串是

String input=“这是一句话,大陆=亚洲端大陆=欧洲端大陆=非洲端大陆=澳大利亚端大陆=南美端大陆=北美端大陆=安塔提卡端”

结果是

[大陆、亚洲、大陆、欧洲、大陆、非洲、大陆、澳大利亚、大陆、南美、大陆、北美]

我想要的是将它们添加到单独的数组中,如下所示

[亚洲大陆],[欧洲大陆],[非洲大陆],[澳大利亚大陆],[南美洲大陆],[北美大陆],[安塔提卡大陆]

以下是我的代码:

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=newarraylist();
Pattern=Pattern.compile(“大陆=(.+?)结束”);
Matcher Matcher=pattern.Matcher(输入);
while(matcher.find()){
列表。添加(“大陆”);
值=匹配器组(1);
列表。添加(值);
} 

任何帮助都将不胜感激。谢谢

如果我没弄错你的问题,你就快到了。您只需将每个匹配项添加到不同的列表中,然后将该列表添加到外部列表中:

    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);
    }
List List=new ArrayList();
Pattern=Pattern.compile(“大陆=(.+?)结束”);
Matcher Matcher=pattern.Matcher(输入);
while(matcher.find()){
List innerList=new ArrayList();
内部列表。添加(“大陆”);
字符串值=matcher.group(1);
innerList.add(value);
添加(innerList);
}
您可以使用

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";
Pattern pattern = Pattern.compile("(continents)=(.+?) end ");
Matcher matcher = pattern.matcher(input);
List<List<String>> lst = new ArrayList<>();
while (matcher.find()){
    lst.add(Arrays.asList(matcher.group(1),matcher.group(2))); 
} 
System.out.println(lst); 
// => [[continents, Asia], [continents, Europe], [continents, Africa], [continents, Australia], [continents, South America], [continents, North America]]
String input=“这是一句话,大陆=亚洲端大陆=欧洲端大陆=非洲端大陆=澳大利亚端大陆=南美端大陆=北美端大陆=安塔提卡端”;
Pattern=Pattern.compile(“(大陆)=(.+?)结束”);
Matcher Matcher=pattern.Matcher(输入);
List lst=new ArrayList();
while(matcher.find()){
添加(Arrays.asList(matcher.group(1)、matcher.group(2));
} 
系统输出打印项次(lst);
//=>[[亚洲大陆],[欧洲大陆],[非洲大陆],[澳大利亚大陆],[南美洲大陆],[北美大陆]]

正则表达式现在有两个捕获组,
大陆
被捕获到组1中,名称被捕获到组2中。匹配结果与
数组.asList(matcher.group(1)、matcher.group(2))一起添加到
列表中

请注意,您也可以使用类似于
(大陆)=(.+?)\\s+end\\b“
的正则表达式来支持任何空格和
end
作为一个完整的单词,甚至可以在字符串末尾或任何非单词字符之前匹配