JAVA里合并多个不相关正则表达式在一起的代码例子

这篇博客展示了如何在JAVA中合并多个不相关的正则表达式,以在一个匹配过程中同时检查多种条件。通过使用非捕获组和或操作符,实现了在一个正则表达式中匹配不同模式的需求。文章提供了一个实际运行的代码例子,演示了如何匹配网页内容中的特定部分。

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

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

<div class=/"question_con/">(.+?)</div>

之间的我需要

<div class=/"pump_ask_con/">(.+?)</div>

之间的我也需要

<title>(.*?) </title>

这个之间的我也需要

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

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


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

  1. import java.util.regex.Matcher;  
  2. import java.util.regex.Pattern;  
  3. import com.laozizhu.tools.PageService;  
  4. /** 
  5.  * JAVA里合并多个不相关正则表达式在一起的代码例子 
  6.  *  
  7.  * @author 老紫竹的家(laozizhu.com) 
  8.  *  
  9.  */  
  10. public class Test {  
  11.   private static Pattern pContentSOSO = Pattern  
  12.       .compile(  
  13.           "(?:<title>(.*?) - 搜搜问问</title>)|(?:<div class=/"question_con/">(.+?)</div>)|(?:<div class=/"pump_ask_con/">(.+?)</div>)|(?:<div class=/"answer_con/">(.+?)</div>)|(?:<div class=/"pump_con/">(.+?)</div>)",  
  14.           Pattern.DOTALL);  
  15.   public static void main(String[] args) {  
  16.     String str = PageService.getPage("http://wenwen.soso.com/z/q143466873.htm");  
  17.     Matcher m = pContentSOSO.matcher(str);  
  18.     int count = m.groupCount();  
  19.     while (m.find()) {  
  20.       for (int i = 1; i <= count; i++) {  
  21.         if (m.start(i) > -1) {  
  22.           System.out.println(m.group(i).trim());  
  23.         }  
  24.       }  
  25.     }  
  26.   }  
  27. }  
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(          "(?:<title>(.*?) - 搜搜问问</title>)|(?:<div class=/"question_con/">(.+?)</div>)|(?:<div class=/"pump_ask_con/">(.+?)</div>)|(?:<div class=/"answer_con/">(.+?)</div>)|(?:<div class=/"pump_con/">(.+?)</div>)",          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 不同正则之间用|分割(也就是或者的意思)


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

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值