3

是否有一个表达式可以获取两个 HTML 标签之间的值?此外,如果跨度标签在那里,那么我需要保持原样

input
<table><tr>
<td>abc<td/> <span class="abc">Test</span>
</tr>
</table>

Output

abc <span class"abc"> Test</span>

我尝试了以下解决方案,但它也删除了标签

String input="<table><tr><td>abc<td/> <span>Test</span></tr></table>";
        String newValue = input.replaceAll("<[^>]*>", "");
        System.out.println(newValue);

上述代码的输出

abc Test

但输出需要

abc <span class"abc"> Test</span>
4

2 回答 2

2

您可以使用(?!...)表示不跟随的否定前瞻来测试标签。java语法示例:

<(?!/?span\\b)[^>]*>
于 2013-10-30T13:19:41.053 回答
1

我认为这将满足您的需求:

str.replaceAll("<(?!\\/?span)[^>]+>", "")

这将寻找 a <,然后向前看,看看它是否包含/spanspan在出现下一个之前>......并将所有内容替换为空。

示例

String str = "<table><tr><td>abc<td/> <span class=\"abc\">Test</span></tr></table>\";";
System.out.println(str.replaceAll("<(?!\\/?span)[^>]+>", ""));
//prints: abc <span class="abc">Test</span>";
于 2013-10-30T13:20:08.920 回答