【问题标题】:Remove binary data from html file using Java Regex使用 Java Regex 从 html 文件中删除二进制数据
【发布时间】:2018-05-02 13:28:51
【问题描述】:

我有一个带有二进制数据标签的 html 文件,例如:

<HTML>
  <BODY STYLE="font: 10pt Times New Roman, Times, Serif">
    <TEXT>
      begin 644 image_002.jpg
        M_]C_X  02D9)1@ ! 0   0 !  #_VP!#  @&!@<&!0@'!P<)"0@*#!0-# L+
        M#!D2$P\4'1H?'AT:'!P@)"XG("(L(QP<*#<I+# Q-#0T'R<Y/3@R/"XS-#+_
        MVP!# 0D)"0P+#!@-#1@R(1PA,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R
       ,Z4]1]: %HHHIB/_9
    end
   </TEXT>
   <TEXT>losses occurring in the third quarter and from weather  </TEXT>
  </BODY>
</HTML>

所以我正在尝试使用 Java Regex 删除所有具有二进制数据的“TEXT”标签。我试过Jsoup library 但它只删除了html标签。我看到了同样的问题here。但它没有使用 Java 正则表达式。

是否有任何标准方法可以从 html 文件中删除此二进制数据?

【问题讨论】:

    标签: java regex jsoup


    【解决方案1】:
       val regex =  """<TEXT>\s*begin \d+ (?>[^e]+|e(?!nd\s*<\/TEXT>))*end\s*<\/TEXT>"""
    

    提供完整示例here

    【讨论】:

      【解决方案2】:

      众所周知,您不应该使用正则表达式来处理 xhtml。

      我会使用 jsoup 删除整个标签,然后将其添加为空。

      但是如果你想使用正则表达式,那么你可以像这样使用正则表达式:

      "your html here".replaceAll("(?s)<TEXT>.*?<\\/TEXT>", "<TEXT></TEXT>")
      

      Working demo

      【讨论】:

      • 感谢您的帮助。我试图只删除具有二进制数据的“”。不是所有的标签。它不起作用。
      • @Sky 好的,使用有效和无效标签的样本相应地更新您的问题,以便我可以更新答案以帮助您
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-11
      • 2012-01-18
      • 2016-01-10
      • 2018-01-16
      • 2015-02-27
      • 2020-06-21
      • 2015-04-04
      相关资源
      最近更新 更多