提取和拆分字符串以创建具有唯一子字符串的新字符串

Extracting and splitting the string to create new string which have unique substring

虽然问题的标题不够清楚,但这是我的问题:

我有一个输入字符串:

"this is text <<PATTERN>>some text1 <</PATTERN>><<PATTERN>>some text2 <</PATTERN>><<PATTERN>>some text3 <</PATTERN>> end text"

我想按如下方式显示输出(或新字符串变量):

String 1= this is text <<PATTERN>>some text1 <</PATTERN>> end text
String 2= this is text <<PATTERN>>some text2 <</PATTERN>> end text
String 3= this is text <<PATTERN>>some text3 <</PATTERN>> end text
String n= this is text <<PATTERN>>some textn <</PATTERN>> end text

基本上我想要单次出现的多个字符串

 <<PATTERN>>some textn <</PATTERN>>.

<<PATTERN>>......<</PATTERN>> 可以多次出现,下一组 <<PATTERN>>......<</PATTERN>> 紧跟在前一组之后。

我怎样才能达到 JAVA?

试试这个

    String str = "this is text1<<PATTERN>>some text1 <</PATTERN>><<PATTERN>>some text2 <</PATTERN>><<PATTERN>>some text3 <</PATTERN>> end text";

    Pattern r = Pattern.compile("(((?!<<PATTERN>>).)*)(<<PATTERN>>.*<</PATTERN>>)(.*)");
    Matcher m = r.matcher(str);
    String begin = "";
    String end = "";
    String data = "";
    if(m.find()){
        begin = m.group(1);
        end = m.group(4);
        data = m.group(3);

        //Pattern inner = Pattern.compile("(<<PATTERN>>((?!<<PATTERN>>).)*<</PATTERN>>)");
        Pattern inner = Pattern.compile("(<<[A-Z]{7}>>((?!<<[A-Z]{7}>>).)*<</[A-Z]{7}>>)");
        Matcher mInner = inner.matcher(data);
        while(mInner.find()){
            System.out.println(begin + mInner.group(1) + end);
        }
    }
    else{
        System.out.println("nothing");
    }