Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式删除一些HTML标记,但保留Span标记_Java_Html_Regex - Fatal编程技术网

Java 正则表达式删除一些HTML标记,但保留Span标记

Java 正则表达式删除一些HTML标记,但保留Span标记,java,html,regex,Java,Html,Regex,是否有一个表达式可以获取两个HTML标记之间的值?另外,如果有Span标记,则我需要保持原样 input <table><tr> <td>abc<td/> <span class="abc">Test</span> </tr> </table> Output abc <span class"abc"> Test</span> 但产出需要 abc <span clas

是否有一个表达式可以获取两个HTML标记之间的值?另外,如果有Span标记,则我需要保持原样

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

Output

abc <span class"abc"> Test</span>
但产出需要

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

您可以使用负前瞻
(?!…)
这意味着不跟在后面来测试标记。java语法中的示例:

<(?!/?span\\b)[^>]*>
]*>

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

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

您有一些代码吗?我尝试删除Html标记,如--input.replaceAll(“]*>”,”);但我需要保持标签的原样。上面的代码删除所有htmlcode@Raje看,你需要在你的问题中提供这一点。否则我们会认为你什么都没试过:)哦。。我会更新我的问题。谢谢你suggestion@chrylis这是正确的。不可能用正则表达式可靠地解析任何类似xml的语言,因为这些语言允许递归语法。看见
<(?!/?span\\b)[^>]*>
str.replaceAll("<(?!\\/?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>";