是否有表达式可以获取两个HTML标记之间的值?如果Span标签在那里,那么我需要保持原样
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>
答案 0 :(得分:2)
您可以使用否定前瞻(?!...)
,这意味着后面没有来测试标记。用java语法编写:
<(?!/?span\\b)[^>]*>
答案 1 :(得分:1)
我认为这可以满足您的需求:
str.replaceAll("<(?!\\/?span)[^>]+>", "")
这将查找<
,然后在前往下一个/span
之前向前看它是否包含span
或>
...并替换所有没有任何东西。
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>";