2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文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)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多