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字符,然后再连续遇到两个换行符。


请注意,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).

于 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

您可以使用 split 这里是一个例子

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