日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

java正則表達式提取匹配字符

 躍來躍去 2010-08-24
正好遇到了一個問題需要將字符串中特定的字符全部提取出來。這個如果按照常規(guī)的字符串處理的話是很繁瑣的。于是想到使用正則表達式來完成。
 
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer(500);
        InputStreamReader read = null;
        BufferedReader reader = null;    //定義BufferedReader
        try {
            File source = new File("D:\\workspace\\TradingPartnerSystem\\tps-web\\target\\tps-web.war\\demo\\vmToHtml.vm");
            read = new InputStreamReader(new FileInputStream(source),"gbk");
            reader = new BufferedReader(read);
            int line;
            while((line = reader.read()) != -1) {
                sb.append(reader.readLine());
            }
            /**
             * http://topic.csdn.net/u/20100824/13/f13a510a-46b4-48ce-8e04-a08c0750dd49.html?1037260202
             * \\u007d => }
             * \\u007B=> {
             */
            String find = "(?<=\\u007B).*?(?=\\u007D)";//"\\u007B.*?\\u007D";//"\\u007B((?>[^\\u007D]+))\\u007D";
            Pattern p = Pattern.compile(find);
            Matcher matcher = p.matcher(sb.toString());
            while(matcher.find()) {
                System.out.println(matcher.group());
            }
        } catch(Exception e) {
        }
    }
 
vmToHtml.vm文件如下:
<html>
    <head></head>
    <body>
        <div>${test}</div>
        <div>${test2}</div>
    </body>
</html>
 
最后要將${test}和${test2}提取出來。
 
剛開始使用的是:\\u007B.*\\u007D
發(fā)現(xiàn)每次提取出來的都是一個大的串:{test}</div><div>${test2}
后來在csdn上問了問原來是貪婪匹配在搞鬼。于是將正則修改為:\\u007B.*?\\u007D。這樣就可以將{test},{test2}提取出來了。
后來一兄臺錦上添花提供了:(?<=\\u007B).*?(?=\\u007D) 將提取出來的{test}中的花括號也去掉了。就更完美了。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多