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

java正则的问题
以下是代码:

  List<String> resultList = new ArrayList<String>();
  Pattern p = Pattern.compile(".htm\">([^&#37;]*)");//匹配.htm">开头,&#37;结尾的文档
  Matcher m = p.matcher(html_line);//开始编译
  while (m.find()) 
  {
  resultList.add(m.group(1));//获取被匹配的部分
  }
我是想抽出字符串
<td width="18%"><a href="taiwan/Changhua.htm">30&#37;</td>
中的30这个位置的数字,可是却抽不出来,但要是数字不是30而是其他,比如
<td width="18%"><a href="taiwan/Changhua.htm">40&#37;</td>
就可以抽出40,求高手指点为什么,错在哪

------解决方案--------------------
改成这样试试:
Java code
Pattern p = Pattern.compile(".htm\">(\\d+)[^&#37;]*");

------解决方案--------------------
[^&#37;]

代表不能是3、7等任何一个,你30里面可是包含了3的。

参考楼上哥们的做法。