2013-10-27 69 views
2

我寫這個正則表達式:爲什麼不能識別這個正則表達式?

((http):\/\/\S*\.(jpg|gif|png))

這個表達式應該找到每一個圖片鏈接在一個字符串

而且,你可以看到它,如果你點擊下面的鏈接正常工作。

http://rubular.com/r/FYwP8Aprdb

但是,當我再粘貼到Java和逃避所有的後臺斜線和呼叫的replaceAll(正則表達式,字符串);

該程序找不到任何東西?

String regex = "((http):\\/\\/\\S*\\.(jpg|gif|png))"; 
boxText.replaceAll(regex, "**$0**"); 

上面的代碼應該在一個字符串讓每一個圖像,然後在$ 0但在運行程序和測試封裝它,什麼都不會發生。

public class SSCCE { 

public static void main(String[] args) { 

    String boxText = "http://www.desibucket.com/db2/01/26039/26039.jpg"; 

    String regex = "((http):\\/\\/\\S*\\.(jpg|gif|png))"; 
    boxText.replaceAll(regex, "**$1**");   

    System.out.println(boxText); 
} 

/* output 

    http://www.desibucket.com/db2/01/26039/26039.jpg 

*/ 

} 

我的假設是我錯誤地逃過了正則表達式,但我不確定。有任何想法嗎?

+0

結果? – 2013-10-27 14:34:45

+0

看看SSCCE –

+0

預期產量是多少? –

回答

4

字符串是不可改變:表達式是匹配,但值永遠不會重新分配到的輸出是什麼由這種表達所產生的的replaceAll

boxText = boxText.replaceAll(regex, "**$1**"); 
+0

更改了我的代碼,它仍輸出相同的內容。 –

+0

@ShaunWild這對ideone([link](http://ideone.com/KDMqGd))正常工作。 – dasblinkenlight

+0

@ShaunWild您確定您正在查看更新代碼的輸出(重建等)嗎? – Reimeus

相關問題