我在编写正确的正则表达式以匹配网址时遇到问题。
String input = "AAAhttp://www.gmail.comBBBBabc@gmail.com"
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 :(得分:0)
.*
进行贪婪的比赛。您必须在?
之后添加*
才能进行不情愿的匹配。
"www\\..*?\\.com"
您的代码将是,
String s = "AAAhttp://www.gmail.comBBBBabc@gmail.com";
Pattern p = Pattern.compile("www\\..*?\\.com");
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group(0));
}
答案 1 :(得分:0)
String regex = "www\\..*?\\.com"
非贪婪地重复使用通配符'。'并按字面意思转义点
答案 2 :(得分:0)
否定字符类比.*?
使用此正则表达式:
www\.[^.]+\.com
[^.]+
表示任何不是点的字符。
在Java中,我们需要转义一些字符:
// for instance
Pattern regex = Pattern.compile("www\\.[^.]+\\.com");
// etc