使用正则表达式在双行中断之前删除字符串

时间:2012-11-27 21:39:17

标签: java regex

我有一个这样的字符串:

this is my text
more text
more text

text I want
is below

我只想要双线下方的文字而不是之前的内容。

以下是我认为应该有效的方法:

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

然而它不起作用。任何帮助将不胜感激

3 个答案:

答案 0 :(得分:1)

您应该使用以下正则表达式: -

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

因为,您希望在遇到两个换行符之前匹配包括newline字符在内的任何内容。


请注意,dot(.)newline不匹配,因此在遇到first newline character时会停止匹配。

如果您希望dot(.)与换行符匹配,则可以使用Pattern.DOTALL str.replaceFirst(?s)可以使用{{1}}表达式来实现。

来自Pattern.DOTALL的文档: -

  

在dotall模式下,表达式。匹配任何字符,包括a   行终结者。默认情况下,此表达式与行不匹配   终止子。

     

也可以通过嵌入式标志表达式(?s)启用Dotall模式。

答案 1 :(得分:0)

为什么不:

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

请注意,它可能是+1,+ 2或+3。我现在不想打破我的电脑来测试它。

答案 2 :(得分:0)

你可以使用拆分这里是一个例子

String newString = string.split("\n\n")[1];