我想从以下句子中取出 “别克”。想以 /autoBrand/brandShow ,> , <为特征。
<a href= "/autoBrand/brandShow.asp?brandID=93 " style= "color:#000099;text-decoration:none; "> 别克 </a>
应该用什么正则表达式? 我的测试程序为什么不行?
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegExpTest {
public static void main(String args[]){
Pattern p = Pattern.compile( "/autoBrand/brandShow[^> ]*> ([^ <]*) < ",Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher( " >> <a href=\ "/autoBrand/brandShow.asp?brandID=93\ " style=\ "color:#000099;text-decoration:none;\ "> 别克 </a> ");
boolean b = m.matches();
String brand=null;
if(b) brand=m.group(1);
System.out.println(b);
System.out.println(brand);
}
}
------解决方案--------------------
排版有问题,重发
----------------------------
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegExpTest {
public static void main(String args[]) {
//你的是贪婪模式,这里最好不用贪婪模式
Pattern p = Pattern.compile( "/autoBrand/brandShow.*?> (.*?)
< ",Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher( " >> <a href=\ "/autoBrand/brandShow.asp?
brandID=93\ " style=\ "color:#000099;text-decoration:none;\ "> 别克 </a> ");
//boolean b = m.matches();//看看文档这个matches是什么意思
boolean b = m.find();
String brand = null;
if (b) brand = m.group(1);
System.out.println(b);
System.out.println(brand);
}
}