0

ちょっとした質問です。

1つが最初に出現し、もう1つが最後に出現する文字列の中に、テキストを引用する必要があります。

元。

[quote]
Hi to all
[quote]
im fine
[/quote]
[/quote]

引用されたすべてのテキストをDIV内に刻むのは嫌です。だから私は次のような正規表現を持っています:

String pattern = "\\[quote\\](.*?)\\[\\\quote\\\]";
body = body.replaceAll(pattern, "<div class=\"quote\">[quote]$1[/quote]</div>"); 

動作しますが、正規表現は最初の[quote]から最初の[/ quote]に移動し、2番目の[/quote]をDIVの外に残します。私が入手したいのは:

<div class="quote">
[quote]
Hi to all
[quote]
im fine
[/quote]
[/quote]
</div>

ありがとう。

4

1 に答える 1

1

@nhahtdhが言うように?*貪欲にするためにを削除したいだけのようです。

比較:

public static void main(String[] args) {
    String    input = "[quote]\n"
        + "Hi to all\n"  
        + "[quote]\n"
        + "im fine\n"
        + "[/quote]\n"
        + "[/quote]\n";

    System.out.println( input.replaceAll( "(?s)\\[quote\\](.*?)\\[/quote]", "<div class=\"quote\">\n[quote]$1[/quote]\n</div>" ));
    System.out.println();
    System.out.println( input.replaceAll( "(?s)\\[quote\\](.*)\\[/quote]", "<div class=\"quote\">\n[quote]$1[/quote]\n</div>" ));
  }

出力:

<div class="quote">
[quote]
Hi to all
[quote]
im fine
[/quote]
</div>
[/quote]


<div class="quote">
[quote]
Hi to all
[quote]
im fine
[/quote]
[/quote]
</div>
于 2012-07-23T12:42:56.243 に答える