【发布时间】:2011-09-23 21:49:51
【问题描述】:
我有一个多行 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)”。如果将它放在正则表达式的开头,它就相当于 DOTALL。问题解决了。
-
这是一个大问题吗?你不能直接打电话给
Pattern.compile等等,或者写一个包装器吗? -
在模式前添加
(?s)是否有效?它适用于其他语言,不确定Java。