2

次のような文字列があります。

this is my text
more text
more text

text I want
is below

前のものではなく、二重改行の下のテキストが必要です。

これが私がうまくいくと思ったものです:

myString.replaceFirst(".+?(\n\n)","");

しかし、それは機能しません。どんな助けでも大歓迎です

4

3 に答える 3

1

目的に合わせて以下の正規表現を使用する必要があります: -

str = str.replaceFirst("(?s).+?(\n\n)", "");

newlineなぜなら、 2 つの改行文字が連続して発生する前に、その文字を含むすべてのものと一致させたいからです。


dot(.)は a と一致しないことに注意してくださいnewline。したがって、first newline character.

dot(.)改行に一致させたいPattern.DOTALL場合は、 を使用できます。 の場合はstr.replaceFirst、式を使用して実現され(?s)ます。

のドキュメントからPattern.DOTALL: -

dotall モードでは、式 . 行末記号を含む任意の文字に一致します。デフォルトでは、この式は行末記号と一致しません。

Dotall モードは、埋め込みフラグ式 (?s) を介して有効にすることもできます。

于 2012-11-27T21:46:07.297 に答える
0

なぜだめですか:

s = s.substring(s.indexOf("\n\n") + 2);

+ 1、+ 2、または+3の場合があることに注意してください。現時点では、コンピューターを分解してテストする気はありません。

于 2012-11-27T21:42:02.803 に答える
0

ここで分割を使用できます例です

String newString = string.split("\n\n")[1];
于 2012-11-27T21:43:16.097 に答える