我有这个正则表达式代码:
match [a-zA-Z0-9\-\.]+\s?(\.|dot|\(dot\)|-|;|:|,)\s?(com|org|net|cz|co|uk|sk|biz|mobi|xxx|eu|me|io|lt)\b
当有人像这样宣传他们自己的服务器时:
m c . s e r v e r . c o m
它绕过并将此消息发送给服务器。
那么,如何解决这个问题呢?先感谢您! :)
答案 0 :(得分:0)
我已经做了一个解决方法,您可以使用它来首先按照正则表达式的方式设置文本格式。我可能会错过某些情况,如果是这种情况,只需添加评论解释,我会尝试覆盖它。
这就是我所做的:
public static void findAd(String text){
text = text.replaceAll("\\b(\\w) (?!\\w{2,})", "$1");
text = text.replaceAll("(\\w+)(?:\\. )", "$1.");
text = text.replaceAll("(\\w+)(?: dot )", "$1.");
return text;
}
因此,当您将此方法称为:
时System.out.println( findAd("bla bla bla bla m c . s e r v e r . c o m bla bla bla") );
System.out.println( findAd("m c . s e r v e r . c o m bla bla bla") );
System.out.println( findAd("bla bla bla m c . s e r v e r . c o m") );
System.out.println( findAd("m c . s e r v e r . c o m") );
System.out.println( findAd("m c dot s e r v e r dot c o m") );
System.out.println( findAd("bla bla bla m c dot s e r v e r dot c o m bla") );
您将获得输出:
bla bla bla bla mc.server.com bla bla bla
mc.server.com bla bla bla
bla bla bla mc.server.com
mc.server.com
mc.server.com
bla bla bla mc.server.com bla
然后用你的测试调用你的表达式:
if (yourMethodThatCheckForAd(find(text))) ...
或者只是将我提供的代码添加到您现有的方法中 :)