|
步骤 2 : 解决办法
如图,被匹配的字符串是
<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公众号,关注后实时获知最新的教程和优惠活动,谢谢。
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|