考虑以下字符串
String html = "<div>test> <div /><script > docuement.alert()
</script> <p>ptag</p>";
我使用正则表达式来替换脚本标记
来完成它 System.out.println(s.replaceAll("(?s)<script.*?(/>|</script>)", ""));
那给了
<div >test> <div />suresh > <p>ptag</p>
但我被要求转换成
<div >test> <div /><script > docuement.alert()
</script > <p>ptag</p>
使用subString
和indexOf
我可以做到这一点,但我不知道如何使用正则表达式来做这件事。
任何帮助表示感谢。
答案 0 :(得分:2)
怎么样
s.replaceAll("(?i)<(/?script[^>]*)>", "<$1>")
这将找到
(?i)
不区分大小写的标记<
/
之后script
字面意思,感谢(?i)
它也会匹配script
,ScrIPt
,SCRIPT
,...... [^>]*
零个非>
个字符>
使用括号我将<
和>
放在第1组中,之后可以通过$1
替换。
演示
String s = "<div >suresh > <div />suresh > <script > docuement.alert()"
+ " </script> <p>ptag</p>";
System.out.println(s.replaceAll("(?i)<(/?script[^>]*)>", "<$1>"));
输出:
<div >suresh > <div />suresh > <script > docuement.alert() </script> <p>ptag</p>