Pattern.DOTALL与String.replaceAll

我有一个多行HTML文档,我试图从中获取一些东西。 我正在使用java的正则表达式(我知道 – XML解析器bla bla bla,请在这里忍受我:))。

dfahfadhadaaaa             sjtsjsrjrsjsrjsrj 

我在字符串中输入了这个HTML:输入。

  input = input.replaceAll("", "buh bye!"); 

显然,它不起作用。 但是,如果我将Pattern.compile与Pattern.DOTALL一起使用,我可以获得模式匹配。

所以,我的问题是 – 如何使用string.replaceall执行类似Pattern.DOTALL的操作?

(?s)附在图案的正面:

 input = input.replaceAll("(?s)", "buh bye!"); 

来自Javadoc :

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

其他标志也以这种方式工作

特殊构造(非捕获)

(?idmsux-idmsux)没什么,但是打开 – 关闭匹配标志idmsux

另外,如果您的目标是从不受信任的来源中删除HTML中的不安全对象,请不要使用正则表达式,请不要将标记列入黑名单 。