Java 使用正则表达式在双线中断之前删除字符串
我有这样一个字符串:Java 使用正则表达式在双线中断之前删除字符串,java,regex,Java,Regex,我有这样一个字符串: this is my text more text more text text I want is below 我只想要双线分隔符下面的文本,而不是之前的内容 以下是我认为有效的方法: myString.replaceFirst(".+?(\n\n)",""); 但是,它不起作用。任何帮助都将不胜感激为什么不: s=s.substring(s.indexOf(“\n\n”)+2) 请注意,它可能是+1、+2或+3。我现在不想打开我的电脑来测试它。你可以使用split
this is my text
more text
more text
text I want
is below
我只想要双线分隔符下面的文本,而不是之前的内容
以下是我认为有效的方法:
myString.replaceFirst(".+?(\n\n)","");
但是,它不起作用。任何帮助都将不胜感激为什么不:
s=s.substring(s.indexOf(“\n\n”)+2)代码>
请注意,它可能是+1、+2或+3。我现在不想打开我的电脑来测试它。你可以使用split,这里就是一个例子
String newString = string.split("\n\n")[1];
您应该使用下面的正则表达式:-
str = str.replaceFirst("(?s).+?(\n\n)", "");
因为,在遇到两个换行符之前,您希望匹配任何内容,包括换行符
请注意,点(.)
与换行符
不匹配,因此在遇到第一个换行符时将停止匹配
如果您希望您的点(.)
与换行符匹配,可以使用模式.DOTALL
,在str.replaceFirst
的情况下,它是通过使用(?s)
表达式实现的
根据以下文件:-
在dotall模式下,表达式。匹配任何字符,包括
行终止符。默认情况下,此表达式与第行不匹配
终结者
也可以通过嵌入的标志表达式(?s)启用Dotall模式
它到底是如何工作的?只有第一行被删除,所以只有在1/n之后