正则表达式删除 HTML 内的 <font> 标签
Regex to remove <font> tags inside HTML
我正在尝试找到一个正则表达式(使用记事本++),它使我能够去除每个单词中的冗余 <font>
元素,以整理它。
我有以下代码:
<font face="Arial" size="12">A </font>
<font face="Arial" size="12">
</font>
<font face="Arial" size="12">guy </font>
<font face="Arial" size="12">
</font>
<font face="Arial" size="12">went </font>
<font face="Arial" size="12">
</font>
<font face="Arial" size="12">to </font>
<font face="Arial" size="12">
</font>
<font face="Arial" size="12">get </font>
<font face="Arial" size="12">
</font>
<font face="Arial" size="12">H </font>
<font face="Arial" size="12">
</font>
<font face="Arial" size="12">
<sub>2</sub>
</font>
<font face="Arial" size="12">0</font>
<font face="Arial" size="12">. </font>
<font face="Arial" size="12">
</font>
我的预期输出是:
<font face="Arial" size="12">A guy went to get H<sub>2</sub>0.</font>
- 字体和大小将始终相同。
- 我不想删除其他元素,例如
- 我需要去掉换行符和制表符,但不是空格
- 不想去掉首开尾关
到目前为止,我无法实现上述三点,因为我怀疑我是从错误的方向处理问题的。
查找: (<font[^>]+>)(.*?)<\/font>[\s]?
替换:
如果 NP++ 支持 \K
和 \G
以及 (?|..)
构造(PCRE 兼容),
这适用于您的示例文本。
注意裁剪是泛化的,但你可能需要修改为
满足您的需求。
找到(?s)(?:(?!\A)\G|<font\s+face="Arial"\s+size="12">\K)(?|\s+()|(?:\s*\r?\n\s*)?(.*?)(?:\s*\r?\n\s*)?)</font>.*?<font\s+face="Arial"\s+size="12">
替换 </code> </p>
<p>格式化</p>
<pre><code> (?s)
(?:
(?! \A )
\G
|
<font \s+ face="Arial" \s+ size="12">
\K
)
(?|
\s+
( ) # (1)
|
(?: \s* \r? \n \s* )?
( .*? ) # (1)
(?: \s* \r? \n \s* )?
)
</font>
.*?
<font \s+ face="Arial" \s+ size="12">
全部替换后的输出
<font face="Arial" size="12">A guy went to get H <sub>2</sub>0.
</font>
我正在尝试找到一个正则表达式(使用记事本++),它使我能够去除每个单词中的冗余 <font>
元素,以整理它。
我有以下代码:
<font face="Arial" size="12">A </font>
<font face="Arial" size="12">
</font>
<font face="Arial" size="12">guy </font>
<font face="Arial" size="12">
</font>
<font face="Arial" size="12">went </font>
<font face="Arial" size="12">
</font>
<font face="Arial" size="12">to </font>
<font face="Arial" size="12">
</font>
<font face="Arial" size="12">get </font>
<font face="Arial" size="12">
</font>
<font face="Arial" size="12">H </font>
<font face="Arial" size="12">
</font>
<font face="Arial" size="12">
<sub>2</sub>
</font>
<font face="Arial" size="12">0</font>
<font face="Arial" size="12">. </font>
<font face="Arial" size="12">
</font>
我的预期输出是:
<font face="Arial" size="12">A guy went to get H<sub>2</sub>0.</font>
- 字体和大小将始终相同。
- 我不想删除其他元素,例如
- 我需要去掉换行符和制表符,但不是空格
- 不想去掉首开尾关
到目前为止,我无法实现上述三点,因为我怀疑我是从错误的方向处理问题的。
查找: (<font[^>]+>)(.*?)<\/font>[\s]?
替换:
如果 NP++ 支持 \K
和 \G
以及 (?|..)
构造(PCRE 兼容),
这适用于您的示例文本。
注意裁剪是泛化的,但你可能需要修改为
满足您的需求。
找到(?s)(?:(?!\A)\G|<font\s+face="Arial"\s+size="12">\K)(?|\s+()|(?:\s*\r?\n\s*)?(.*?)(?:\s*\r?\n\s*)?)</font>.*?<font\s+face="Arial"\s+size="12">
替换 </code> </p>
<p>格式化</p>
<pre><code> (?s)
(?:
(?! \A )
\G
|
<font \s+ face="Arial" \s+ size="12">
\K
)
(?|
\s+
( ) # (1)
|
(?: \s* \r? \n \s* )?
( .*? ) # (1)
(?: \s* \r? \n \s* )?
)
</font>
.*?
<font \s+ face="Arial" \s+ size="12">
全部替换后的输出
<font face="Arial" size="12">A guy went to get H <sub>2</sub>0.
</font>