我正在使用Twitch.tv的IRC-Bot
我刚遇到一个问题。
我想过滤一个URL的字符串,然后超时在聊天中写入URL的用户。 在Google上搜索我发现我应该使用正则表达式,但我不明白该怎么做。
从另一个问题开始,我发现要使用的正则表达式是
"[a-zA-Z\d]+://(\w+:\w+@)?([a-zA-Z\d.-]+\.[A-Za-z]{2,4})(:\d+)?(/.*)?"
some1可以给我一些关于如何使用正则表达式过滤未知URL的字符串的示例吗?
应该检测出类似的东西;
http://www.google.com
www.google.com
google.com
任何帮助都是对我不好的英语= p
抱怨答案 0 :(得分:0)
你可以这样做:
String regex = "([a-zA-Z\d]+://)?(\w+:\w+@)?([a-zA-Z\d.-]+\.[A-Za-z]{2,4})(:\d+)?(/.*)?";
Pattern p = Pattern.compile(regex);
// measuredString是人写的消息,您要检查URL模式
Matcher m = p.matcher(testedString);
if (m.find()) {
// timout the user who inserted the URL
}
顺便说一下,使用正则表达式检测String的更多示例是here:
此外,我改进了您的网址格式,现在它将识别所有常规网址字符串
答案 1 :(得分:0)
您包含的正则表达式仅匹配非常详细的URL。开头:
[a-zA-Z\d]+://
匹配一个或多个(即+)大写或小写字母或数字(括号中的部分),后跟“://”。也就是说,它匹配以“http://”或“ftp://”开头的URL或其他内容。如果字符串没有以该字符串开头,则它将不匹配。
在一般情况下匹配网址很棘手。你不能真正区分一个字符串,如“为了很好的交易去 - > dealz.biz”和“哈哈,这很有趣。你自己想出来的吗?”我认为尝试基于URL进行自动禁止是一个坏主意。