Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.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解析和包装某些标记的正则表达式_Java_Html_Regex - Fatal编程技术网

用java解析和包装某些标记的正则表达式

用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"

我试图解析一个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" 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中出现,没有其他标签会出现在那里。