更多追问追答
追问
只想用正则表达式,想一步到位
追答
用正则表达式比上面的方法麻烦,并且运行速度慢,你要非用正则表达式,不知下面这样的Java程序得到的结果,行不行。public class KK {
public static void main(String[] args) {
String s="第一篇第二篇第三篇第四篇";
String regex="[\u7BC7]+";
String[]str=s.split(regex);
String s1=str[0]+"\u7BC7";
String s2="";
for(int i=1;i
s2=s2+str[i]+"\u7BC7";
System.out.println(s1);
System.out.println(s2);
}
}
运行结果:
第一篇
第二篇第三篇第四篇
追问
我换成(^.*?\u7BC7)就很接近了,只想用正则表达式,不要搞什么常规拆分了。
追答
这样我看应该行了。import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class KK {
public static void main(String[] args) {
String s="第一篇第二篇第三篇第四篇";
String regex=".+?[\u7BC7]+";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(s);
String s1="";
String s2="";
int count=0;
while(m.find()){
if(count==0){
s1=m.group();
count++;
}else{
s2=s2+m.group();
count++;
}
}
System.out.println(s1);
System.out.println(s2);
}
}
运行结果:
第一篇
第二篇第三篇第四篇
追问
不妥啊,大哥,你这种花太多代码来写了,\u7BC7(?!.*\u7BC7)已经很接近了,是匹配最后一个“篇”的,有没有办法匹配第一个“篇”?
追答
你匹配了第一个"篇"怎么匹配后面的字符串呢,象你说的可以用"^.*?\u7BC7"来匹配第一个"篇"
后面的怎么办呢,再用另一个正则表达式,再匹配一遍?
追问
我只要匹配第一个“篇”就够了,后面的不匹配了。
追答
用你说的正则表达式:^.*?\u7BC7
就可以匹配第一个"篇".我还是建议你用string的indexOf和substring函数来处理这个问题
完整的Java程序如下:import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class KK {
public static void main(String[] args) {
String s="第一篇第二篇第三篇第四篇";
String regex="^.*?\u7BC7";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(s);
while(m.find()){
System.out.println(m.group());
}
}
}
运行结果:
第一篇
追问
我只想匹配第一个“篇”字,而不是“第一篇”,只要一个字,不是三个字。
追答
用正则表达式:^.*?(\u7BC7) 取第一捕获组的数据就是第一个"篇"字
完整的Java程序如下:import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class KK {
public static void main(String[] args) {
String s="第一篇第二篇第三篇第四篇";
String regex="^.*?(\u7BC7)";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(s);
while(m.find()){
System.out.println(m.group(1));
}
}
}
运行结果:
篇
追问
我要一步到位的,var array=Regex.Split("第一篇第二篇第三篇第四篇", "正则表达式"),一句话就能搞定,拆出来的数组array[0]="第一",array[1]=“第二篇第三篇第四篇”,拆出来的array[0]+="篇"就实现拆分成两组的功能,不用写多余的代码。
追答
我想起来了,可以用一个正则表达式分割两个字符串的。
正则表达式:^(.*?\u7BC7)(.*)$
取第一和第二捕获组的数据,就是"第一篇" 和"第二篇第三篇第四篇"
具体的Java语言的例子如下:import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class KK {
public static void main(String[] args) {
String s="第一篇第二篇第三篇第四篇";
String regex="^(.*?\u7BC7)(.*)$";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(s);
if(m.matches()){
System.out.println(m.group(1));
System.out.println(m.group(2));
}
}
}
运行结果:
第一篇
第二篇第三篇第四篇