java正则表达式匹配多行文本

摘要: 在默认情况下,正则表达式中的"." 能匹配很多字符,但却不包括换行符。为了使正则表达式匹配多行,需要增加(?s)或者采用Pattern.DOTALL .下面用一个简单的例子说明.

在默认情况下,正则表达式中的"." 能匹配很多字符,但却不包括换行符。为了使正则表达式匹配多行,需要增加(?s)或者采用Pattern.DOTALL .下面用一个简单的例子说明.

有如下文本,需要过滤Address 1的内容。

Starting...
Address 1: 88 app 2/8
	superman taman, puchong
	36100, Malaysia
Address 2: abc
End


先采用如下方式过滤
Address 1:\\s(.*)Address 2:


结果错误

继续试验:
(?s)Address 1:\\s(.*)Address 2:
或者采用
Pattern.compile(Address 1:\\s(.*)Address 2:, Pattern.DOTALL);


结果正确。整个例子如下:
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class ReTest{
 
	private Pattern addressPattern = Pattern.compile(ADDRESS_PATTERN);
	private Matcher matcher; 
	//可选
	/*private Pattern addressPattern = Pattern.compile(ADDRESS_PATTERN, Pattern.DOTALL);*/ 
	private static final String ADDRESS_PATTERN = "(?s)Address 1:\\s(.*)Address 2:"; 
	public static void main(String[] args) { 
		String data = "Testing... \n" +
			"Address 1: 88 app 2/8\n" +
			"superman taman, puchong\n" +
			"36100, Malaysia\n" +
			"Address 2: abc" +
			"testing end"; 
		ReTest obj = new ReTest();
		List list = obj.getAddress(data);
 
		System.out.println("原始数据 : ");
		System.out.println(data + "\n"); 
		System.out.println("============================");
		System.out.println("re查找结果 : " + list.get(0)); 
	}
 
	private List getAddress(String data){ 
		List result = new ArrayList(); 
		matcher = addressPattern.matcher(data); 
		while (matcher.find()) {
			result.add(matcher.group(1));
		} 
		return result;
	}
 
}


运行结果如下;
原始数据 : 
Testing... 
Address 1: 88 app 2/8
superman taman, puchong
36100, Malaysia
Address 2: abctesting end

============================
re查找结果 : 88 app 2/8
superman taman, puchong
36100, Malaysia


其他正则表达式参考文档:正则表达式参考

上一篇: 用java 代码将 ubb编辑器转为ueditor 编辑器 的 html格式
下一篇: 再次在BAE上用DJANGO搭建了一个网站
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号