String str = "<script>aaaaaaaaa</SCRIPT>111<SCRIPT>bbbbbbbbbb</script>222";请问怎么replace才能把两个<script>去掉呢,最后只留下:111222初学,呵呵~~

解决方案 »

  1.   

    str=str.replaceAll("(?i)<script>[^>]*</script>","");
      

  2.   

    str=str.replaceAll("(?i) <script>[^<]* </script>","");
      

  3.   

    参考这个帖子: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);
        }
    }
      

  4.   

    (?s) 表达 dot all 的意思。默认时 . 是不能匹配行结束符的,行结束符有六种。什么是行结束符请参考 java.util.regex.Pattern 的 API DOC 里面有说明。当带有 (?s) 也就是 DOTALL 匹配模式时 . 是可以匹配行结束符的。
      

  5.   

    关于 (?s) 也可以参考这个帖子 7 楼的回复:http://topic.csdn.net/u/20080627/14/8a91b33a-f35c-4303-85b5-e0a8da462202.html
      

  6.   

    我一直以为DOTALL是一个单词,都不知道这是什么东西.原来是 dot all
      

  7.   

    至于为会 DOTALL 要使用 (?s) 呢,因为匹配时都看作一行了,也就是 single line,因此就是 (?s) 了,呵呵。
      

  8.   

    看了那两个帖子,我也有个同问:(?:aaaa|bbbb)和(aaaa|bbbb)有什么区别呢?
      

  9.   

    在问下,(?:aaaa|bbbb)这里 ? 后面的 : 冒号有什么用呢?
      

  10.   

    去我博客看看字符串详解http://blog.sina.com.cn/bjxuyesheng
      

  11.   

    哦,明白了~可有时看到的表达式里,好象也有用[]分组的,比如[aaa|bbb]这方括号和圆括号有什么区别呢?
      

  12.   

    [aaa|bbb] 我不知道你在哪里看到这么写的,如果是真看到的话,这个就不懂正则表达式。[ ] 称为字符组,表示匹配其中每个字符中的任何一个[aaa|bbb] 与 [a|b] 一模一样,表示能匹配字母 a 或者字母 b 或者竖线 |
      

  13.   

    thinking in java 中有写到:
    (?s)Pattern.DOTALL  
    在dotall模式下,表达式'.'匹配所有字符,包括行终结符,缺省情况下'.'不匹配行终结符使用时可以直接写在正则表达式中 (?s)
    也可以这样写:
    Matcher m = Pattern.compile("\\d+",Pattern.DOTALL).matcher(s);