如何只匹配一个字符串而不匹配另一个

How to match only one string and not another

这是字符串 1:

<td class="AAA"><span class="BBB">Text1</span></td>

我想删除跨度,使其看起来像这样:

<td class="BBB">Text1</td>

使用这个正则表达式很简单:

Search: <td class="AAA"><span class="BBB">(.*)</span></td>
Replace: <td class="BBB"></td>

问题:有时字符串看起来像这样(字符串 2):

<td class="AAA"><span class="BBB">Text1</span>-<span class="BBB">Text2</span></td>

由于有 2 个结束标记,它也匹配。但我根本不希望它被匹配。如何只找到字符串 1?

不匹配匹配组中的任何字符,而是匹配除开 <:

之外的所有字符
Search: <td class="AAA"><span class="BBB">([^<]*)</span></td>
Replace: <td class="BBB"></td>

这是假设您的 Text1 不包含 < 字符。