2013-04-19 31 views
0

我想要什麼,我認爲是一個簡單的正則表達式模式。模式匹配每個出現的第一個和第三個單詞(與一切之間)

我有一個文本文件,它看起來是這樣的:

等等等等等等http://www.google.com。這裏還有別的東西,等等吧。 http://x.oddree.com/image1.jpg。一些更多的文字......等等等等。 http://x.oddree.com/image2.jpg

我試圖抓住離開那裏,就是以http開頭並以JPG結尾的任何文本。不是完整的網址。只有以.jpg結尾的那些。

換句話說,我希望我的輸出是:

http://x.oddree.com/image1.jpghttp://x.oddree.com/image2.jpg

我正則表達式是: 「\ B(HTTP)*(JPG)\ b」 和它似乎工作。但是當與模式匹配一​​起使用時,我最終會從http的第一次出現到最後一次出現的jpg。我知道我必須雙倍轉義\ b到\ b,但它仍然無法按預期工作。

我一直在我的頭撞牆在這個小時。 :-)

下面的代碼片段:

   if(file.exists()) 
      { 
       StringBuilder text = new StringBuilder(); 

       try { 
        BufferedReader br = new BufferedReader(new FileReader(file)); 
        String line; 

        while ((line = br.readLine()) != null) { 
         text.append(line); 
         text.append('n'); 
        } 
       } 
       catch (IOException e) { 
        //TODO Write some error handling. 
       } 

       Pattern pattern = Pattern.compile(
         "\\b(http).*(jpg)\\b" 
        ); 

       Matcher matcher = pattern.matcher(text); 
       while (matcher.find()) { 

        result.add(matcher.group()); 
       } 

       my_text.setText(result.toString()); 
      } 

回答

0

嘗試

Matcher m = Pattern.compile("\\bhttp://\\S+?\\.jpg\\b").matcher(s); 
+0

這工作!所以它是\ S與雙重逃脫,然後一個+?爲'直通'語法。這與標準正則表達式相差甚遠。我將不得不閱讀更多關於模式匹配的文檔。 :-)謝謝你的回答! – RayHaque

相關問題