首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试用<br/>替换<br>、<BR>、<br +attribute>标记

尝试用<br/>替换<br>、<BR>、<br +attribute>标记
EN

Stack Overflow用户
提问于 2017-06-02 18:45:41
回答 4查看 343关注 0票数 0

我正在尝试将一堆HTML文档转换成符合XML的标准(通过java方法),并且有许多<br>标记,它们要么是未关闭的,要么(2)包含属性。由于某些原因,我所使用的regex不寻址包含属性的标记。以下是代码:

代码语言:javascript
复制
htmlString = htmlString.replaceAll("(?i)<br *>", "<br/>");

这段代码对于文档中的所有<br>标记都很好;它用<br/>替换它们。但是,对于这样的标记

代码语言:javascript
复制
<BR style="PAGE-BREAK-BEFORE: always" clear=all>

它什么也做不了。我希望所有的br标记都是<br/>,而不考虑转换之前标签中的任何属性。

为了实现这一点,我需要在regex中添加什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-06-02 18:53:58

这个regex会做你想做的事:<(BR|br)[^>]*>

下面是一个有用的示例:Regex101

票数 1
EN

Stack Overflow用户

发布于 2017-06-02 18:51:22

您可能希望<br\b[^>]*>匹配以下所有标记

  • <br开始
  • <br之后有一个单词中断(例如,您将不匹配一个<brown>标记)
  • 包含任意数量的非>字符,包括0。
  • >结束
票数 1
EN

Stack Overflow用户

发布于 2017-06-02 18:52:42

您必须使用.*而不是*

代码语言:javascript
复制
htmlString.replaceAll("(?i)<br .*>", "<br/>")
//-----------------------------^^

因为:

*匹配前面的字符或子表达式0次或多次。

.*匹配任意字符0或多次。

所以对于你的案子:

代码语言:javascript
复制
String htmlString = "<BR style=\"PAGE-BREAK-BEFORE: always\" clear=all>";
System.out.println(htmlString.replaceAll("(?i)<br .*>", "<br/>"));

输出

代码语言:javascript
复制
<br/>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44335554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档