我有一个这样的字符串:
this is my text
more text
more text
text I want
is below
我只想要双换行符下方的文本,而不是之前的内容。
这是我认为应该起作用的:
myString.replaceFirst(".+?(\n\n)","");
但是它不起作用。任何帮助将不胜感激
您应该为您的目的使用以下正则表达式:-
str = str.replaceFirst("(?s).+?(\n\n)", "");
因为,您想要匹配任何内容,包括该newline
字符,然后再连续遇到两个换行符。
请注意,dot(.)
不匹配 a newline
,因此它会在遇到 时停止匹配first newline character
。
If you want your dot(.)
to match newline, you can use Pattern.DOTALL
, which in case of str.replaceFirst
, is achieved by using (?s)
expression.
From the documentation of Pattern.DOTALL
: -
In dotall mode, the expression . matches any character, including a line terminator. By default this expression does not match line terminators.
Dotall mode can also be enabled via the embedded flag expression (?s).
为什么不:
s = s.substring(s.indexOf("\n\n") + 2);
请注意,它可能是 +1、+2 或 +3。我现在不想拆开我的电脑来测试它。
您可以使用 split 这里是一个例子
String newString = string.split("\n\n")[1];