读书人

java运用正则截取重复两个字符串之间的

发布时间: 2012-12-23 11:28:15 作者: rapoo

java使用正则截取重复两个字符串之间的值

假设有段html内容如下:

?

受付番号 : 20120723-004206注文日  : 2012年 7月 23日  ○商品名:黄太の笠松センパイ察  ○数量 :1  ○格 :\628 受付番号 : 20120728-006047注文日  : 2012年 7月 28日  ○商品名:Shadow Dance  ○数量 :1  ○格 :\893 送料    : \XXX...

?

?其实这是封邮件中内容,每行都会以\n分隔,要求用正则表达式获取每一段受付番号中的内容(另外其实也可以使用非贪婪模式.*?会进行最小匹配)。方法如下:

?

 /**     * 截取html块     * @return     */    public static List<String> getContentByEachHtml(String html){    List<String> htmls = null;        //使用零宽断言(.*?中?的作用是避免贪婪匹配)    String regex = "(?<=" + "受付番号 :" + ")(.*?)(?=" + "(受付番号 :|送料    :)" + ")";    //默认正则会按\n自动截断字符,这里不能截断,需要整体HTML块,因此设定Pattern.DOTALL忽略\n截断使用整体文本        Pattern pattern = Pattern.compile(regex,Pattern.DOTALL);    Matcher matcher = pattern.matcher(html);    while(matcher.find()){    if(htmls == null)    htmls = new ArrayList<String>();    htmls.add(matcher.group(1));    }    return htmls;    }

读书人网 >编程

热点推荐