java正则表达式!正则表达式踩坑!!!

java正则表达式

java正则表达式套路:
String content = "你好<h1>你好啊!!!</h1>啊!!!";
String pattern = "<h1>.*?</h1>";
List<String> list = new ArrayList<String>();
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(content);
while(m.find()){
        list.add(m.group());
}
for (int i=0; i<list.size(); i++){
      get = get + list.get(i);
}
String result = get.replaceAll("<.*?>", "");
System.out.println(result);
输出结果为:你好啊!!!

 
 
一般来说正常得这个代码套上就行了!!
但是,博主作死,拿正则表达式来解析网页发现,为什么我正则表达式没用了!!!!!
没有用了!!!!
输出的结果为空!!!!!!

打个比方:

String content = "<div class=\"post_text\" id=\"endText\" style=\"border-top:1pxsolid #ddd;\">\n" +

         "                     测试测试测试测试测试测试测试

         "                   测试测试测试测试测试测试测试

         "                测试测试测试测试测试测试测试

         "                              </div>\n" 

 
这段代码套上去,想得到

<div class="post_text" id="endText" style="border-top:1px solid #ddd;">....</div>的内容
结果输出时空。。。。
 
 
 
 
 
 
然后我百度了好久,没有专门得讲解。最后还是去认真看Pattern包。。发现
 
 
 
 
 
 
Pattern.DOTALL

是个好东西。  

DOTALL

启用 dotall 模式。

在 dotall 模式中,表达式 .可以匹配任何字符,包括行结束符。默认情况下,此表达式不匹配行结束符。

通过嵌入式标志表达式 (?s) 也可以启用 dotall 模式(s 是"single-line" 模式的助记符,在 Perl 中也使用它)。

也就是这句话
Pattern p = Pattern.compile(pattern,Pattern.DOTALL);
才可以让.*? 进行多行匹配!



转个链接https://www.cnblogs.com/sparkbj/articles/6207103.html



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值