【发布时间】:2018-11-02 11:58:09
【问题描述】:
我需要一个正则表达式来删除<FONT> 的所有实例以及它可能包含在其中的任何属性,例如<FONT size=2 face=Verdana> 及其结束标记</FONT>。我得到的字符串,字体标签可以包含任何属性和这些属性的值的不同变体,并且 html 结构不一致。这是我得到的字符串的一个例子:
<UL>
<LI><FONT size=2 face=Verdana>random text<STRONG>random text</STRONG>random text<SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"><SPAN style="mso-spacerun: yes"> </SPAN>random text</SPAN> </FONT></LI>
<LI><FONT size=2 face=Verdana><FONT size=2 face=Verdana><STRONG>random text</STRONG></FONT></LI> <LI>random text</FONT></LI>
<LI><FONT size=2 face=Verdana>random text</FONT></LI>
<LI><FONT size=2 face=Verdana>random text</FONT></LI>
这就是我希望它在使用正则表达式后的样子:
<UL>
<LI>random text<STRONG>random text</STRONG>random text<SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"><SPAN style="mso-spacerun: yes"> </SPAN>random text</SPAN></LI>
<LI><STRONG>random text</STRONG></LI>
<LI>random text</LI>
<LI>random text</LI>
<LI>random text</LI>
我尝试了不同的变体,我已经能够删除 <FONT 部分,但不能删除它的属性、结尾 > 或结束标记 </FONT>
这是我正在使用的示例
loc.result = rereplace(arguments.htmlString, "\\<FONT[^*\\>", "", "ALL");
我为我的错误正则表达式代码道歉,所以任何提示或建议将不胜感激!
【问题讨论】:
-
我不是在尝试解析 html,我只是想删除那些字体标签。
-
将您的 html 放入 XML 对象并使用 XPath。比使用正则表达式更可靠。当您第一次遇到 html 中包含文本的 html 时,正则表达式将中断,该文本是显示如何使用字体标记的示例代码(例如在
或
标记内)。 -
@SamM 你真的会相信 HTML 也是有效的 XML 吗?
-
@JamesAMohler 你是对的,但总有希望。如果 html 太旧以至于仍然使用字体标签,我想我不会屏住呼吸,尽管 html 是有效的 xml。 ;)
标签: regex coldfusion html-parsing cfml lucee