求问一个网址的正则表达式:
(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)前缀是一下三种情况:
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
System.out.println(s.replaceAll("(?i)(http://|www.)[\\w\\d.]+(.com|.org|.info|.tv|.edu)", "ok"));
这样应该可以
示例输入:check www.foo.com 4 www.foo.com www.scoopz.com
正确输出:check ok1 4 ok2 ok3
(初学java,请各位高手多多赐教!)
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);
}