how2j.cn

步骤 1 : 如果被匹配的数据有换行,那么就无法使用.匹配   
步骤 2 : 解决办法   

步骤 1 :

如果被匹配的数据有换行,那么就无法使用.匹配

edit
如图,被匹配的字符串是

<a href='www.12306.com'>
这是一个超链
</a>


但是却无法通过<a.*?</a>匹配出来,因为默认情况下,元字符.不能匹配回车换行
如果被匹配的数据有换行,那么就无法使用.匹配
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Regex { public static void main(String[] args) { String[] ps = { "<a.*?</a>" }; StringBuffer targetString = new StringBuffer(); targetString.append("<a href='www.12306.com'>\r\n这是一个超链\r\n</a>"); System.out.println("目标字符串:\r\n" + targetString); for (String p : ps) { System.out.println(); Pattern pattern = Pattern.compile(p); Matcher matcher = pattern.matcher(targetString); System.out.println("匹配模式:\t" + p); boolean found = false; while (matcher.find()) { System.out.format("找到匹配的字符串:" + " \"%s\" 开始位置是 " + "index %d 结束位置是 index %d.%n", matcher.group(), matcher.start(), matcher.end()); found = true; } if (!found) System.out.println("没有找到匹配的字符串"); } } }
在创建Pattern对象的时候,加上一个参数:Pattern.DOTALL,即表示匹配任何字符,包括回车换行
Pattern pattern = Pattern.compile(p,Pattern.DOTALL);
解决办法
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Regex { public static void main(String[] args) { String[] ps = { "<a.*?</a>" }; StringBuffer targetString = new StringBuffer(); targetString.append("<a href='www.12306.com'>\r\n这是一个超链\r\n</a>"); System.out.println("目标字符串:\r\n" + targetString); for (String p : ps) { System.out.println(); Pattern pattern = Pattern.compile(p,Pattern.DOTALL); Matcher matcher = pattern.matcher(targetString); System.out.println("匹配模式:\t" + p); boolean found = false; while (matcher.find()) { System.out.format("找到匹配的字符串:\r\n%s\r\n开始位置是 " + "index %d 结束位置是 index %d.%n", matcher.group(), matcher.start(), matcher.end()); found = true; } if (!found) System.out.println("没有找到匹配的字符串"); } } }


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 Temp-正则表达式-换行 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 578362961
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图