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

java正则表达式
java正则表达式套路:

String content = "你好

你好啊!!!

啊!!!"; String pattern = "

.*?

"; List list = new ArrayList(); Pattern p = Pattern.compile(pattern); Matcher m = p.matcher(content); while(m.find()){ list.add(m.group()); } for (int i=0; i", ""); System.out.println(result);
输出结果为:你好啊!!!


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

打个比方:


String content = "

\n" +

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

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

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

         "                              

\n" 


这段代码套上去,想得到

....
的内容
结果输出时空。。。。



然后我百度了好久,没有专门得讲解。最后还是去认真看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



你可能感兴趣的:(自然语言处理)