如何使用具有多次出现的模式的模式/匹配器拆分字符串?

时间:2018-11-02 17:55:02

标签: java

我有一个字符串,其中模式多次出现。我想用包括模式(multiple)在内的模式“ multiplex”将字符串分成4部分。我想要4个字符串

String1 =名称为true

String2 =多路复用到1000

String3 = 200的多路复用

String4 =多路复用为真

  

字符串aaa =“名称:1/1,网络:是,...(更多数据)... MPEG:是            Multiplex:,0004,传输流ID:0,带宽:5000000,...(更多数据)...预留带宽:1000 Multiplex:   0002,           传输流ID:0,带宽:5000000,...(更多数据)。.保留带宽:           200 Multiplex: 0008,传输流ID:0,           带宽:5000000,保留带宽:100000,...(更多数据)...真

    Pattern pattern = Pattern.compile("Multiplex:"); 

    Matcher m = pattern.matcher(aaa); 

    while (m.find()) 

我如何将字符串分为4个部分,包括“ Multiplex”?

1 个答案:

答案 0 :(得分:1)

您可以使用正向查找的正则表达式模式,

public class MyClass {
    public static void main(String args[]) {
        String s = "Name:1/1, Network: true, ...(more data)... MPEG: true Multiplex: 0004, Transport Stream ID: 0, Bandwidth: 5000000,...(more data)... Reserved Bandwidth: 1000 Multiplex: 0002, Transport Stream ID: 0, Bandwidth: 5000000,...(more data).. Reserved Bandwidth: 200 Multiplex: 0008, Transport Stream ID: 0, Bandwidth: 5000000, Reserved Bandwidth: 100000,...(more data)...true";
        String[] arr = s.split("(?=Multiplex:)");

        for(String str : arr){
            System.out.println(str);
        }
    }
}

此正则表达式(?=Multiplex:)匹配一个空字符串,后跟Multiplex: