日期:2014-05-20  浏览次数:20777 次

正则表达式求教
我想从以下句子中取出   “别克”。想以   /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( "&nbsp;&gt;&gt;&nbsp; <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( "&nbsp;&gt;&gt;&nbsp; <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);
}
}