Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 提取并拆分字符串以创建具有唯一子字符串的新字符串_Java_String - Fatal编程技术网

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

Java 提取并拆分字符串以创建具有唯一子字符串的新字符串,java,string,Java,String,虽然问题的标题不够清楚,但我的疑问是: 我有一个输入字符串: "this is text <<PATTERN>>some text1 <</PATTERN>><<PATTERN>>some text2 <</PATTERN>><<PATTERN>>some text3 <</PATTERN>> end text" “这是文本一些文本1一些文本2一些文本

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

我有一个输入字符串:

"this is text <<PATTERN>>some text1 <</PATTERN>><<PATTERN>>some text2 <</PATTERN>><<PATTERN>>some text3 <</PATTERN>> end text"
“这是文本一些文本1一些文本2一些文本3结束文本”
我想按如下方式显示输出(或新字符串变量):

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
String 1=这是一些文本1结束文本
字符串2=这是一些文本2结束文本
字符串3=这是一些文本3结束文本
String n=这是一些文本n结束文本
基本上我希望多个字符串有一个出现

 <<PATTERN>>some textn <</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");
    }
String str=“这是text1some text1 some text2 some text3 end text”;
Pattern r=Pattern.compile((((?!))*)(.*)(.*)(.*);
匹配器m=r.Matcher(str);
字符串begin=“”;
字符串结束=”;
字符串数据=”;
if(m.find()){
开始=m组(1);
结束=m组(4);
数据=m组(3);
//模式内部=模式.compile(((?!))*)”;
模式内部=模式.compile(((?!))*)”;
Matcher mInner=internal.Matcher(数据);
while(mInner.find()){
System.out.println(begin+mInner.group(1)+end);
}
}
否则{
System.out.println(“无”);
}

我不明白你的问题..使用正则表达式。就是这样。@marounnaroun最后一行,从
开始,基本上解释了他想要实现的目标。@kon你能分享代码吗?如何实现这一目标?@AruniMishra绝对不能。您需要自己尝试,然后回到这里,在上下文中询问您自己编写的代码的任何问题。它工作得非常好,为了使它更通用,我在Pattern.compile()中给出了Pattern.DOTALL;虽然我不完全理解这里的逻辑,但请你再详细解释一下好吗?解释:我正在使用正则表达式分组将str字符串划分为树部分:开始、数据和结束,我正在使用第一个发现。然后,第二个正则表达式根据模式遍历数据。您可以在此处找到有关正则表达式分组的详细信息和说明: