Java 试图取代<;br>&书信电报;BR>&书信电报;br+;属性>;带有<;br/>;

Java 试图取代<;br>&书信电报;BR>&书信电报;br+;属性>;带有<;br/>;,java,regex,Java,Regex,我正在尝试将一堆HTML文档转换为XML遵从性(通过java方法),并且有许多标记(1)未关闭或(2)包含属性。出于某种原因,我使用的正则表达式没有处理包含属性的标记。代码如下: htmlString = htmlString.replaceAll("(?i)<br *>", "<br/>"); htmlString=htmlString.replaceAll(“(?i)”,“”); 此代码适用于文档中的所有标记;它将它们替换为。但是,对于像 <BR style

我正在尝试将一堆HTML文档转换为XML遵从性(通过java方法),并且有许多

标记(1)未关闭或(2)包含属性。出于某种原因,我使用的正则表达式没有处理包含属性的标记。代码如下:

htmlString = htmlString.replaceAll("(?i)<br *>", "<br/>");
htmlString=htmlString.replaceAll(“(?i)”,“
”);
此代码适用于文档中的所有

标记;它将它们替换为

。但是,对于像

<BR style="PAGE-BREAK-BEFORE: always" clear=all>

它没有任何作用。我希望所有br标记都是

,而不管转换前标记中的任何属性

要实现这一点,我需要向正则表达式中添加什么?

您可能希望
]*>
匹配所有需要的标记

  • 开始,您可能希望
    ]*>
    匹配所有


    • 开始,您必须使用
      *
      而不是
      *

      htmlString.replaceAll("(?i)<br .*>", "<br/>")
      //-----------------------------^^
      
      输出

      <br/>
      


      您必须使用
      *
      而不是
      *

      htmlString.replaceAll("(?i)<br .*>", "<br/>")
      //-----------------------------^^
      
      输出

      <br/>
      


      此正则表达式将执行您想要的操作:
      ]*>


      下面是一个工作示例:

      此正则表达式将执行您想要的操作:
      ]*>


      下面是一个工作示例:

      使用正则表达式解析HTML不是一个好主意,因为HTML不是正则的。您应该使用适当的解析库,如

      NekoHTML是一个简单的HTML扫描程序和标记平衡器,它支持 应用程序程序员解析HTML文档并访问 使用标准XML接口的信息。解析器可以扫描HTML 文件和“修复”许多人类(和计算机)经常犯的错误 作者在编写HTML文档时会遇到困难。NekoHTML添加缺少的父级 元素;使用可选的结束标记自动关闭图元;和 可以处理不匹配的内联元素标记


      使用正则表达式解析HTML不是一个好主意,因为HTML不是正则的。您应该使用适当的解析库,如

      NekoHTML是一个简单的HTML扫描程序和标记平衡器,它支持 应用程序程序员解析HTML文档并访问 使用标准XML接口的信息。解析器可以扫描HTML 文件和“修复”许多人类(和计算机)经常犯的错误 作者在编写HTML文档时会遇到困难。NekoHTML添加缺少的父级 元素;使用可选的结束标记自动关闭图元;和 可以处理不匹配的内联元素标记


      *
      不是个好主意。这种模式对Lorem ipsum dolor sit amet有什么影响?
      *
      不是一个好主意。这一模式对Lorem ipsum dolor sit amet有什么影响?