我试图找到一个正则表达式(使用记事本++),这使我能够删除每个单词上的多余<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]?
替换: $2
答案 0 :(得分:1)
如果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">
替换$1
格式化
(?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>
进行测试