提取和拆分字符串以创建具有唯一子字符串的新字符串
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");
}
虽然问题的标题不够清楚,但这是我的问题:
我有一个输入字符串:
"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");
}