2

2つの文字列の間にある文字列を見つけるために正規表現を使用しています

コード:

        Pattern pattern = Pattern.compile("EMAIL_BODY_XML_START_NODE"+"(.*)(\\n+)(.*)"+"EMAIL_BODY_XML_END_NODE");
        Matcher matcher = pattern.matcher(part);
        if (matcher.find()) {
                      ..........

テキストには問題なく機能しますが、テキストに改行などの特殊文字が含まれている場合は改行されます

4

1 に答える 1

3

.ラインターミネータにも一致するようにパターンをコンパイルする必要があります。これを行うには、DOTALLフラグを使用する必要があります。

Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);

編集:申し訳ありませんが、私はこの問題を抱えてからしばらく経ちました。(.*)(\\n+)(.*)また、中央の正規表現をからに変更する必要があります(.*?)。複数の要素*?がある場合は、怠惰な数量詞()を使用する必要があります。EMAIL_BODY_XML_START_NODEそれ以外の場合、正規表現は、要素ごとに個別に一致するのではなく、最初の要素の開始と最後の要素の終了を一致させます。私はこれがあなたに当てはまる可能性は低いと思いますが。

于 2012-05-10T14:39:14.270 に答える