[学习正则表达式用法]JAVA里合并多个不相关正则表达式在一起的代码例子[转载]...

前几个月,做过一个从淘宝网上抓取数据的小程序.就是把每个页面里,宝贝的价格,已出售数,上架时间之类的数据保存起来,做一个分析.

这些我想要的数据都是在特定的标签里,于是我要做的就是把这些在特定标签里的数据抓取下来..

当时是用笨办法混过去了.. 今天看到老紫竹的一篇文章,正解决了我的问题,故特转一下.学习学习:P

===============================================================

转载地址:http://blog.csdn.net/java2000_net/archive/2009/07/16/4353980.aspx

事情的来源是,我要得到某个字符串里满足条件的一部分,但这个条件有多个可能性,比如 

(.+?)
 

之间的我需要 

(.+?)
 

之间的我也需要 

(.*?)  

这个之间的我也需要 

当然其它的可以是任何符合我要求的正则表达式,我的需求就是不想用多个正则分别匹配,然后组装,而是希望在一个正则里面实现。 

当然这几个正则之间肯定是或的关系,只要一段字符串满足任何一个正则,都可以。 经过【火龙果】的指导,我们终于实现了。 



看一个例子吧,这个是真实的例子,可以运行的。 

view plaincopy to clipboardprint?
import java.util.regex.Matcher;  
import java.util.regex.Pattern;  
import com.laozizhu.tools.PageService;  
/**  
 * JAVA里合并多个不相关正则表达式在一起的代码例子  
 *  
 * @author 老紫竹的家(laozizhu.com)  
 *  
 */  
public class Test {  
  private static Pattern pContentSOSO = Pattern  
  .compile(  
  "(?:(.*?) - 搜搜问问)|(?:
(.+?)
)|(?:
(.+?)
)|(?:
(.+?)
)|(?:
(.+?)
)",  
  Pattern.DOTALL);  
  public static void main(String[] args) {  
  String str = PageService.getPage("http://wenwen.soso.com/z/q143466873.htm");  
  Matcher m = pContentSOSO.matcher(str);  
  int count = m.groupCount();  
  while (m.find()) {  
  for (int i = 1; i <= count; i++) {  
  if (m.start(i) > -1) {  
  System.out.println(m.group(i).trim());  
  }  
  }  
  }  
  }  
}  



技术重点有2个 

1 每个正则(?:)包起来,代表这个是非捕获组 

2 不同正则之间用|分割(也就是或者的意思) 



其它的大家自己看代码吧!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17057040/viewspace-609373/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/17057040/viewspace-609373/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值