次のような文字列があります。
this is my text
more text
more text
text I want
is below
前のものではなく、二重改行の下のテキストが必要です。
これが私がうまくいくと思ったものです:
myString.replaceFirst(".+?(\n\n)","");
しかし、それは機能しません。どんな助けでも大歓迎です
目的に合わせて以下の正規表現を使用する必要があります: -
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) を介して有効にすることもできます。
なぜだめですか:
s = s.substring(s.indexOf("\n\n") + 2);
+ 1、+ 2、または+3の場合があることに注意してください。現時点では、コンピューターを分解してテストする気はありません。
ここで分割を使用できます例です
String newString = string.split("\n\n")[1];