2014-07-11 125 views
0

我有一个问题来编写适当的正则表达式来匹配URL。java模式匹配问题

String input = "AAAhttp://[email protected]"  
String regex = "www.*.com" // To match www.gmail.com URL  
Pattern p = Pattern.compile(regex) 
Matcher m = p.matcher(input) 
while(m.find()){ 

}  

在这里,我想删除网址www.gmail.com。然而它匹配到字符串的结尾以匹配也以gmail.com结尾的电子邮件地址。 有人可以帮助我得到正确的正则表达式只匹配URL?

+0

_Here我想删除的网址'www.gmail.com'_你肯定还是要提取???? –

回答

0

.*做了一个贪婪的匹配。您必须在*之后添加?以进行不情愿的匹配。

"www\\..*?\\.com" 

您的代码将是

String s = "AAAhttp://[email protected]"; 
    Pattern p = Pattern.compile("www\\..*?\\.com"); 
    Matcher m = p.matcher(s); 
    while (m.find()) { 
     System.out.println(m.group(0)); 
    } 

IDEONE

0
String regex = "www\\..*?\\.com" 

通配符的非贪婪重复 ''和逃生点时,从字面上

0

一个否定的字符类是快于.*?

使用这个表达式:

www\.[^.]+\.com 

[^.]+意味着这不是一个点的任何字符。

在Java中,我们需要逃避一些字符:

// for instance 
Pattern regex = Pattern.compile("www\\.[^.]+\\.com"); 
// etc