gpt4 book ai didi

java - Pattern.DOTALL 与 String.replaceAll

转载 作者:IT老高 更新时间:2023-10-28 20:51:53 25 4
gpt4 key购买 nike

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

    dfahfadhadaaaa<object classid="java:com.sun.java.help.impl.JHSecondaryViewer" width="14" height="14">
<param name="content" value="../Glossary/glInterlinkedTask.html">

<param name="text" value="interlinked task">
<param name="viewerActivator" value="javax.help.LinkLabel">
<param name="viewerStyle" value="javax.help.Popup">
<param name="viewerSize" value="390,340">
<param name="textFontFamily" value="SansSerif">
<param name="textFontWeight" value="plain">
<param name="textFontStyle" value="italic">
<param name="textFontSize" value="12pt">
<param name="textColor" value="blue">

<param name=iconByID" value="">
</object>
sjtsjsrjrsjsrjsrj

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

    input = input.replaceAll("<object classid=\"java:com.sun.java.help.impl.JHSecondaryViewer.*?object>", "buh bye!");

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

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

最佳答案

(?s) 附加到图案的前面:

input = input.replaceAll("(?s)<object classid=\"java:com\\.sun\\.java\\.help\\.impl\\.JHSecondaryViewer.*?object>", "buh bye!");

来自 Javadoc :

Dotall mode can also be enabled via the embedded flag expression (?s). (The s is a mnemonic for "single-line" mode, which is what this is called in Perl.)

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

Special constructs (non-capturing)

...

(?idmsux-idmsux) Nothing, but turns match flags i d m s u x on - off

附带说明,如果您的目标是从不受信任的来源的 HTML 中删除不安全的对象,请不要使用正则表达式,也请不要 blacklist标签。

关于java - Pattern.DOTALL 与 String.replaceAll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6500036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com