忽略正则表达式中的换行符?

我在文本文件中有以下内容

some texting content   Test 

我从文件中读取它并将其存储在String中,即inputString

  expectedString = inputString.replaceAll("\\", "NewContent"); 

我得到预期的输出即

  some texting content NewContent  Test 

基本上如果img和src之间存在行尾字符,如下所示,它在下面的示例中不起作用

   

有没有办法正则表达式在匹配时忽略它们之间的行尾字符?

如果您希望dot (.)也匹配newline ,可以使用Pattern.DOTALL标志。 另外,在String.replaceAll()情况下,您可以在模式的开头添加(?s) ,这相当于此标志。

来自Pattern.DOTALL – JavaDoc : –

也可以通过嵌入式标志表达式(?s)启用Dotall模式。 ( s是“单行”模式的助记符,这是在Perl中调用的。)

所以,您可以像这样修改您的模式: –

 expectedStr = inputString.replaceAll("(?s)", "Content"); 

注意: –您无需转义angular bracket(<)

默认情况下. 字符与换行符不匹配。 您可以通过指定Pattern.DOTALL标志来启用此行为。 在String.replaceAll() ,您可以通过将(?s)附加到模式的前面来执行此操作:

 expectedString = inputString.replaceAll("(?s)\\", "NewContent"); 

另请参见Pattern.DOTALL和String.replaceAll

您需要使用Pattern.DOTALL模式。

replaceAll()不会将模式标志作为单独的参数,但您可以在表达式中启用它们,如下所示:

 expectedString = inputString.replaceAll("(?s)\\", ...); 

但请注意,使用正则表达式解析HTML并不是一个好主意。 最好使用HTML解析器。