import java.io.*;
import java.util.regex.*;
public class test
{
public static void main(String[] args)
{
String str = "Iraq fighting";
String regex="(?<=<(\\w+)>).*(?=<\\/\1>)";
Matcher m=Pattern.compile(regex).matcher(str);
while(m.find()){
System.out.println(m.group());
}
// System.out.println(2);
}
}Exception in thread "main" java.util.regex.PatternSyntaxException: Look-behind g
roup does not have an obvious maximum length near index 10
(?<=<(\w+)>).*(?=<\/>)
^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.group0(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at test.main(test.java:9)
哪里出了问题?。。
import java.util.regex.*;
public class test
{
public static void main(String[] args)
{
String str = "Iraq fighting";
String regex="(?<=<(\\w+)>).*(?=<\\/\1>)";
Matcher m=Pattern.compile(regex).matcher(str);
while(m.find()){
System.out.println(m.group());
}
// System.out.println(2);
}
}Exception in thread "main" java.util.regex.PatternSyntaxException: Look-behind g
roup does not have an obvious maximum length near index 10
(?<=<(\w+)>).*(?=<\/>)
^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.group0(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at test.main(test.java:9)
哪里出了问题?。。
正则中间不要叫无谓的空格。(?<=<(\\w+)>)中不能用\\w+之类的不确定长度的匹配字符
public static void main(String args[]) {
String str="<b> asgasdfg</b> ";
String regex="<b>([^<]*)</b>";
Matcher m=Pattern.compile(regex).matcher(str);
if(m.find()){
System.out.println(m.group(1));
}
}
}
F:\java>java Test
asgasdfg
//问题出在逆序环视中使用的量词不对
//java中虽然支持(?<=Expression)的语法,但是只支持固定长度的表达式,量词也只支持“?”,其它量词如“*”、“+”、“{m,}”是不支持的
//另外反向引用在java中要用\\1
String str = "Iraq <b>fighting</b>";
String regex="<(\\w+)>(.*?)</\\1>";
Matcher m=Pattern.compile(regex).matcher(str);
while(m.find()){
System.out.println(m.group(2));
}