51,407
社区成员
发帖
与我相关
我的任务
分享
private static void process1(String url){
String regex = "(?<=/)(?<content>[^/.]+)[.]\\w+$";
String regex2 = "(?<=/)(?<content>[^/.]+)[.]\\w+$";
Matcher matcher = Pattern.compile(regex).matcher(url);
Matcher matcher2 = Pattern.compile(regex2).matcher(url);
if(matcher.find()){
System.out.println("p1:"+matcher.group("content"));
}
if(matcher2.find()){
System.out.println("pm2:"+matcher2.group("content"));
}
}
//为啥我定义2个regex相同的会报错呢?
private static void process1(String url){
String regex = "(?<=/)(?<content>[^/.]+)[.]\\w+$";
String regex2 = "(?<=/)(?<content>[^/.]+)[.]\\w+$";
Matcher matcher = Pattern.compile(regex).matcher(url);
Matcher matcher2 = Pattern.compile(regex2).matcher(url);
if(matcher.find()){
System.out.println("p1:"+matcher.group("content"));
System.out.println("pm2:"+matcher2.group("content"));
}
}
p1:abc123
Exception in thread "main" java.lang.IllegalStateException: No match found
at java.util.regex.Matcher.group(Matcher.java:524)
at com.xzh.re.Test.process1(Test.java:26)
at com.xzh.re.Test.main(Test.java:12)
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test{
public static void main(String[] args){
String url1 = "http://www.pythonchallenge.com/pc/def/abc123.html";
String url2 = "http://ggg.pythonchallenge.net/pc/def/abc123.php";
String url3 = "http://rrr.pythonchallenge.gov/pc/def/abc123.jsp";
process1(url1);
System.out.println("-------------------------------------------");
process2(url2);
System.out.println("-------------------------------------------");
process3(url3);
}
private static void process1(String url){
String regex = "(?<=/)(?<content>[^/.]+)[.]\\w+$";
Matcher matcher = Pattern.compile(regex).matcher(url);
if(matcher.find()){
System.out.println(matcher.group("content"));
}
}
private static void process2(String url){
String regex = "(?<=[.])(?<content>[^.]+)[.]\\w+(?=/)";
Matcher matcher = Pattern.compile(regex).matcher(url);
if(matcher.find()){
System.out.println(matcher.group("content"));
}
}
private static void process3(String url){
String regex = "(?<=/)(?<content>\\w+)(?=/)";
Matcher matcher = Pattern.compile(regex).matcher(url);
while(matcher.find()){
System.out.println(matcher.group("content"));
}
}
}