2014-01-21 46 views
1

我正在为Twitch.tv工作的IRC-BotJava过滤URL的字符串?

我刚遇到一个问题。

我想过滤一个URL的字符串,然后超时在聊天中写入URL的用户。 在谷歌搜索我发现,我应该使用正则表达式,但我不明白如何做到这一点。

从另一个问题来看,我发现使用的正则表达式是;

​​3210

可以some1给我任何关于如何使用正则表达式来过滤未知网址的字符串的例子吗?

它应该检测像东西;

http://www.google.com 
www.google.com 
google.com 

任何帮助apreaciated和我的英语不好= p对不起

+0

在这里你去:http://docs.oracle.com/javase/tutorial/essential/regex/ –

+0

玩这个一会儿http://regexpal.com/ – Gustavo

回答

0

你可以这样来做:

String regex = "([a-zA-Z\d]+://)?(\w+:\[email protected])?([a-zA-Z\d.-]+\.[A-Za-z]{2,4})(:\d+)?(/.*)?"; 
Pattern p = Pattern.compile(regex); 

// testedString是人写的消息,并要检查URL模式

Matcher m = p.matcher(testedString); 
    if (m.find()) { 
     // timout the user who inserted the URL 
    } 

顺便提及,与正则表达式检测字符串更多的例子是here

而且我提高你的URL模式,现在它可以识别所有普通URL字符串

0

包含的是正则表达式只匹配非常啰嗦的URL。开头:

[a-zA-Z\d]+:// 

是匹配的一个或多个(这是+)大写或小写的字母或数字的(这是在括号中的部分),接着是“://”。也就是说,它匹配以“http://”或“ftp://”或其他内容开头的URL。如果字符串不是以那个开头的,那么它将不匹配。

在一般情况下匹配URL是非常棘手的。你无法真正地分辨出一个字符串之间的区别,比如“对于大交易去 - > dealz.biz”和“哈哈,这很搞笑,你自己想出来吗?”我认为尝试基于URL自动禁止是一个不好的主意。