正则表达式找到第一个标签

时间:2013-01-17 10:48:23

标签: regex search notepad++

我使用Notepad ++,我需要找到标签

<font face="arial" size="4">

,直到

</font></td>

我试过了:

<font face="arial" size="4">(.*)</font>(.*)</td>

但它找到了从第一行到最后一行的所有内容。但我需要它找到第一个“font face”与其相邻或最接近的/ font / td标签的第一个匹配,然后在同一文本中找到下一个..等等。

示例文字:

<font face="arial" size="4">text text text...sdfklj@skdjhgls:d</font></td>

<font face="arial" size="4">some text<br />
any more text
    </font> </td>

morel;owkjdgkd dhfksg h

<font face="arial" size="4">some text</font><p>
more text</font> </td>

然后我需要用以下代码替换这两个标签: 第一个用

<span style="font-size: 14pt; font-family: Times; lang=en-us">

和第二个:

</span></td>

1 个答案:

答案 0 :(得分:0)

试着偷懒:

<font face="arial" size="4">[\s\S]*?</font>[\s\S]*?</td>

使用[\s\S]匹配任何字符(包括换行符),并添加延迟量词?,以便在</font></td>出现之前尽可能多地匹配。< / p>

如果</font></td>代码之间只有空格,您显然可以使用\s*代替[\s\S]*?。 (我注意到您的示例html格式错误,因为它包含</font>标记后的</font>标记。)

您可以使用这些内容来进行替换:

<font face="arial" size="4">([\s\S]*?)</font>([\s\S]*?)</td>

<span style="font-size: 14pt; font-family: Times; lang=en-us">\1</span>\2</td>