用java解析和包装某些标记的正则表达式
我试图解析一个html内容,并将标签放在只应保留文本内容和图像内容的周围。 例如:用java解析和包装某些标记的正则表达式,java,html,regex,Java,Html,Regex,我试图解析一个html内容,并将标签放在只应保留文本内容和图像内容的周围。 例如: <span style="font-size:10pt;font-family:.SF NS Text;" class="left">hi<span style="font-weight:normal;font-style:normal;vertical-align:top;"><img border="0" src="file:///Users/EmoticonCool.png"
<span style="font-size:10pt;font-family:.SF NS Text;" class="left">hi<span style="font-weight:normal;font-style:normal;vertical-align:top;"><img border="0" src="file:///Users/EmoticonCool.png" alt="cool" title="cool" keybrd="8-)" width="18" height="18" src_data="file:///Users/EmoticonCool.png" /></span> test
</span>
hi测试
我期待的输出如下
<form><p><span color=\"color\">hi</span><img border="0" src="file:///Users/EmoticonCool.png" alt="cool" title="cool" keybrd="8-)" width="18" height="18" src_data="file:///Users/EmoticonCool.png" /></p><span color=\"color\">test</span></form>
hi测试
我想用一些额外的属性将所有文本内容包装到span中,并将img作为其后续处理
我写了一个小main来去除所有的样式和span(因为我不需要任何样式),并通过删除html来给我提供只有img标记的内容
import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;
public class HTMLParser {
private static List<String> EXCLUDED_TAGS = Arrays.asList(
"(<span\\s*[^>]*>|</span>)",
"(<b>|</b>)",
"(<i>|</i>)",
"(<u>|</u>)"
);
private static String teststring="<span style=\"font-size:10pt;font-family:.SF NS Text;\" class=\"left\">hi<span style=\"font-weight:normal;font-style:normal;vertical-align:top;\"><img border=\"0\" src=\"file:///Users/EmoticonCool.png\" alt=\"cool\" title=\"cool\" keybrd=\"8-)\" width=\"18\" height=\"18\" src_data=\"file:///Users/EmoticonCool.png\" /></span> test</span>";
public static void main(String[] args) {
EXCLUDED_TAGS.forEach(
re -> {
teststring = Pattern.compile(re, Pattern.CASE_INSENSITIVE | Pattern.MULTILINE)
.matcher(teststring)
.replaceAll("");
});
System.out.println(teststring);
}
}
导入java.util.array;
导入java.util.List;
导入java.util.regex.Pattern;
公共类HTMLPasser{
排除的私有静态列表\u标记=Arrays.asList(
"(]*>|)",
"(|)",
"(|)",
"(|)"
);
私有静态字符串teststring=“hi test”;
公共静态void main(字符串[]args){
已排除的\u标记。forEach(
re->{
teststring=Pattern.compile(re,Pattern.CASE|u不区分大小写| Pattern.MULTILINE)
.matcher(测试字符串)
.全部替换(“”);
});
System.out.println(teststring);
}
}
我现在不知道如何在文本周围加上空格。任何关于这方面的线索都会很有帮助可以考虑使用HTML解析器而不是ReXEPS吗?我不想在这里添加HTML解析器的依赖性。我知道只有SUN和IMG标签将在HTML中出现,没有其他标签会出现在那里。