初学正则,请一解,很简单的字符串,谢谢了~~ String str = "<script>aaaaaaaaa</SCRIPT>111<SCRIPT>bbbbbbbbbb</script>222";请问怎么replace才能把两个<script>去掉呢,最后只留下:111222初学,呵呵~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 str=str.replaceAll("(?i)<script>[^>]*</script>",""); str=str.replaceAll("(?i) <script>[^<]* </script>",""); 参考这个帖子:http://topic.csdn.net/u/20080313/14/a070f343-7fb3-4c19-86ba-36b56c780295.html这个帖子 20 楼的图片没有了,重新上传了一次:你这个问题比上面那个帖子还要简单很多:public class Test { public static void main(String[] args) { String str = "<script>aaaaaaaaa</SCRIPT>111 <SCRIPT>bbbbbbbbbb</script> 222"; str = str.replaceAll("(?is)\\s*<script>.*?</script>\\s*", ""); System.out.println(str); }} (?s) 表达 dot all 的意思。默认时 . 是不能匹配行结束符的,行结束符有六种。什么是行结束符请参考 java.util.regex.Pattern 的 API DOC 里面有说明。当带有 (?s) 也就是 DOTALL 匹配模式时 . 是可以匹配行结束符的。 关于 (?s) 也可以参考这个帖子 7 楼的回复:http://topic.csdn.net/u/20080627/14/8a91b33a-f35c-4303-85b5-e0a8da462202.html 我一直以为DOTALL是一个单词,都不知道这是什么东西.原来是 dot all 至于为会 DOTALL 要使用 (?s) 呢,因为匹配时都看作一行了,也就是 single line,因此就是 (?s) 了,呵呵。 看了那两个帖子,我也有个同问:(?:aaaa|bbbb)和(aaaa|bbbb)有什么区别呢? 在问下,(?:aaaa|bbbb)这里 ? 后面的 : 冒号有什么用呢? 去我博客看看字符串详解http://blog.sina.com.cn/bjxuyesheng 哦,明白了~可有时看到的表达式里,好象也有用[]分组的,比如[aaa|bbb]这方括号和圆括号有什么区别呢? [aaa|bbb] 我不知道你在哪里看到这么写的,如果是真看到的话,这个就不懂正则表达式。[ ] 称为字符组,表示匹配其中每个字符中的任何一个[aaa|bbb] 与 [a|b] 一模一样,表示能匹配字母 a 或者字母 b 或者竖线 | thinking in java 中有写到:(?s)Pattern.DOTALL 在dotall模式下,表达式'.'匹配所有字符,包括行终结符,缺省情况下'.'不匹配行终结符使用时可以直接写在正则表达式中 (?s)也可以这样写:Matcher m = Pattern.compile("\\d+",Pattern.DOTALL).matcher(s); ByteArrayOutputStream的内存溢出问题 画一个有背景图片窗口,并可以添加按钮...高手帮忙! 自学数据结构,第一章练习一就迷惑了。 將JAVA程式如何修改成Servlet的形式 动态修改表头 怎么样中止一条正在执行的语句 请各位大侠帮帮忙啊,java的一个基础问题 怎么样从打开文件对话框中,选择文件打开? 关于布局管理器的问题。 分是没有了,但是学习还是要进行的 请前辈进来指点下,谢谢~~ FrameListener
String str = "<script>aaaaaaaaa</SCRIPT>111 <SCRIPT>bbbbbbbbbb</script> 222";
str = str.replaceAll("(?is)\\s*<script>.*?</script>\\s*", "");
System.out.println(str);
}
}
(?s)Pattern.DOTALL
在dotall模式下,表达式'.'匹配所有字符,包括行终结符,缺省情况下'.'不匹配行终结符使用时可以直接写在正则表达式中 (?s)
也可以这样写:
Matcher m = Pattern.compile("\\d+",Pattern.DOTALL).matcher(s);