忽略正则表达式中的换行符?
我在文本文件中有以下内容
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解析器。