Java 正则表达式从多行匹配到字符串结尾缓冲区,并替换为&引用;

Java 正则表达式从多行匹配到字符串结尾缓冲区,并替换为&引用;,java,regex,Java,Regex,我有以下文件内容,我正在尝试匹配下面解释的reg,并将匹配开始(“On….writed”)之前的字符串缓冲区结尾替换为空白“”: 如果我将文件内容从上面读取为字符串,并尝试匹配“On…writed:”部分,则从“On…writed:”到文件末尾,我似乎无法替换该部分: //字符串文本= 图案图案= Pattern.compile(“^(On\\s(+)writed:)$”,Pattern.MULTILINE | Pattern.DOTALL); Matcher m=模式匹配器(文本); if(m

我有以下文件内容,我正在尝试匹配下面解释的reg,并将匹配开始(“On….writed”)之前的字符串缓冲区结尾替换为空白“”:

如果我将文件内容从上面读取为字符串,并尝试匹配“On…writed:”部分,则从“On…writed:”到文件末尾,我似乎无法替换该部分:

//字符串文本=
图案图案=
Pattern.compile(“^(On\\s(+)writed:)$”,Pattern.MULTILINE | Pattern.DOTALL);
Matcher m=模式匹配器(文本);
if(m.find()){
//这个匹配,但我想从“上…写:->
text=m.replaceAll(“”;//这应该只包含“test”
}

您不需要进行匹配,可以直接替换。如果替换中使用的模式与任何内容都不匹配,则不会发生任何事情

请尝试以下操作:

// String text = <file contents from above...the Before contents>
String text = text.replaceAll("^(On.*?wrote:).*$", "");
编辑:当然,您可以:

// String text = <file contents from above...the Before contents>
Pattern PATTERN = 
  Pattern.compile("^(On.*?wrote:).*$", Pattern.MULTILINE | Pattern.DOTALL );
Matcher m = PATTERN.matcher(text);
if (m.find()) {
   text = m.replaceAll("");  // This should only contain "test"

}
//字符串文本=
图案图案=
Pattern.compile(“^(On.*?writed:).*$”,Pattern.MULTILINE | Pattern.DOTALL);
Matcher m=模式匹配器(文本);
if(m.find()){
text=m.replaceAll(“”;//这应该只包含“test”
}

否,仅保留“打开”之前的内容。。。写下:“.基本上我想删除”。。。只剩下“测试”了,这是“在……上”之前的唯一文本。。。写道:“模式。啊,很漂亮!谢谢你的信息!非常简洁!效果很好!qq:有没有办法定义一个模式变量模式(就像我上面提到的那样)要替换正则表达式本身?需要首先匹配并确定模式,我已经在变量中定义了该模式,所以我想知道是否可以重用包含正则表达式的模式变量?太棒了!再次感谢!
// String text = <file contents from above...the Before contents>
String text = text.replaceAll("^(On.*?wrote:).*$", "");
String text = text.replaceAll("(?sm)^(On.*?wrote:).*$", "");
// String text = <file contents from above...the Before contents>
Pattern PATTERN = 
  Pattern.compile("^(On.*?wrote:).*$", Pattern.MULTILINE | Pattern.DOTALL );
Matcher m = PATTERN.matcher(text);
if (m.find()) {
   text = m.replaceAll("");  // This should only contain "test"

}