Java 雷格斯旺';t检查是否有空间
我有这个正则表达式代码:Java 雷格斯旺';t检查是否有空间,java,regex,whitespace,Java,Regex,Whitespace,我有这个正则表达式代码: 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 它绕过此消息并将其发送到服务器 那么,如何解决这个问题呢?先谢谢你!:) 我已经做了一个变通方法,您可以使用它首先以正则表达式可以使用的方式格式化文本。我可能会错过一些情
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
它绕过此消息并将其发送到服务器
那么,如何解决这个问题呢?先谢谢你!:) 我已经做了一个变通方法,您可以使用它首先以正则表达式可以使用的方式格式化文本。我可能会错过一些情况,如果是这样的话,只需添加一个注释解释,我将尝试涵盖它 以下是我所做的:
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))) ...
或者只是将我提供的代码添加到现有方法中
:)请向我们展示代码,并添加一个标记,指定您使用的编程语言[a-zA-Z0-9\-\.]+应该匹配什么?这是Java语言。对不起,我没有源代码。我正在使用插件。[a-zA-Z0-9\-\.]+将匹配.com之前(或smth else)或mc之后的文本。(或smth else)您的
(com | org | net |…)
需要com
,org
,net
。。。(没有空格)某处。事实上,com
(带空格)通过了测试,这意味着发生了其他事情,但如果不知道上下文,就无法判断。你使用的软件是什么?插件的用途是什么?