求问一个网址的正则表达式:
(1)前缀是一下三种情况:
     http://
     http://www.
     www.
 (2)中间包含一个或者多个字符,每个字符是一个英文字母(大小写均可),或者是一个数字(0-9,),或者是一个句点(.).
 (3)后缀是以下五种情况之一:
    .com
    .org
    .info
    .tv
    .edu
注意:每个网址在满足以上情况下尽可能往左右延伸,如http://www.tv.org.superwww.cail.com而不是http://www.tv.org和www.cail.com
我主要是不明白(2)的构造,怎么保证它一定不会是空格呢,比如在做替换时,加入网址替换成ok,当例子是:
输入:check www.foo.com 4 www.foo.com www.scoopz.com
正确输出应该是 check ok 4 ok ok
        而不是 check ok      

解决方案 »

  1.   

    javascript: ^(http://|http://www\.|www\.)[a-zA-Z0-9\.]+(\.com|\.org|\.info|\.tv|\.edu)$java: ^(http://|http://www\\.|www\\.)[a-zA-Z0-9\\.]+(\\.com|\\.org|\\.info|\\.tv|\\.edu)$
      

  2.   

    String s = "check www.foo.com 4 www.foo.com www.scoopz.com";
    System.out.println(s.replaceAll("(?i)(http://|www.)[\\w\\d.]+(.com|.org|.info|.tv|.edu)", "ok"));
    这样应该可以
      

  3.   

    (http://|www\\.)[a-zA-Z0-9\\.]+[\\.](com|org|info|tv|edu)
      

  4.   

    追问一下各位高手,如果上面在替换ok的同时再加上一个数字表示替换的顺序的话那replaceAll()函数就好像不适用了,那怎么办呢?
    示例输入:check www.foo.com 4 www.foo.com www.scoopz.com
    正确输出:check ok1 4 ok2 ok3    
    (初学java,请各位高手多多赐教!)
      

  5.   

    public static void main(String[] args) {
    String s = "check www.foo.com 4 www.foo.com www.scoopz.com";
    for (int i=1; i<=3; i++){
    s = s.replaceFirst("(?i)(http://|www.)[\\w\\d.]+(.com|.org|.info|.tv|.edu)", "ok"+i);
    }
    System.out.println(s);
    }