我有一个这样的字符串:
this is my text
more text
more text
text I want
is below
我只想要双线下方的文字而不是之前的内容。
以下是我认为应该有效的方法:
myString.replaceFirst(".+?(\n\n)","");
然而它不起作用。任何帮助将不胜感激
答案 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];