使用Java Regex从html文件中删除二进制数据

时间:2018-05-02 13:28:51

标签: java regex jsoup

我的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>

所以我试图删除所有&#34; TEXT&#34;标记那些使用Java Regex的二进制数据。我试过Jsoup library但它只删除了html标签。我看到同样的问题here。但它没有使用Java Regex。

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

<强> Working demo

答案 1 :(得分:1)

   val regex =  """<TEXT>\s*begin \d+ (?>[^e]+|e(?!nd\s*<\/TEXT>))*end\s*<\/TEXT>"""

完整示例here