2

私はこの正規表現を書きました:

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

この正規表現は、文字列内のすべての画像リンクを見つける必要があります

ご覧のとおり、下のリンクをクリックすると正常に動作します。

http://rubular.com/r/FYwP8Aprdb

しかし、それを Java に貼り付けてバックスラッシュをすべてエスケープし、replaceAll(regex, string); を呼び出すと、

プログラムは何かを見つけることができませんか?

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

 */

}

私の仮定は、正規表現を間違ってエスケープしたということですが、よくわかりません。何か案は?

4

1 に答える 1

4

Strings are immutable : 式は一致していますが、値が結果に再割り当てされることはありませんreplaceAll

boxText = boxText.replaceAll(regex, "**$1**");
于 2013-10-27T14:34:56.553 に答える