java - 正则表达式匹配否定到 ebay 网站

标签 java regex

我有一个匹配任何 ebay 网站的正则表达式:

(?i)^((http|https)://)?(\w+\.)*ebay.(\w+.)+

我想否定它,匹配所有,除了这个网站

我试过:

(?! pattern )
(?!pattern)
[^pattern]

但没有任何效果。也许我的第一个正则表达式太不理想?

Java 中的测试用例:

Pattern queryPattern = Pattern.compile("(?i)^((http|https)://)?(\\w+\\.)*ebay.(\\w+.)+");
List<String> queries = new LinkedList();
queries.add("http://www.ebay.com/blabla");
queries.add("www.ebay.com/blabla");
queries.add("www.eBay.com/blabla");
queries.add("www.ebay.com.hk/blabla");
queries.add("www.ebay.co.uk");
queries.add("ttt.ebay.com");
queries.add("ru.ebay.com");
queries.add("test.ru.ebay.com");
queries.add("test.ru.ebAY.com");
queries.add("ebay.com");
queries.add("naebay.com");
queries.add("ru.naebay.ru");
queries.add("blah.ru");
for (String query : queries) {
  System.out.println(query + " " + queryPattern.matcher(query).find());
}

最佳答案

明显的 react :

    Pattern queryPattern = Pattern.compile("(?i)^((http|https)://)?(\\w+\\.)*ebay.(\\w+.)+");
    List<String> queries = new LinkedList<String>();
    ...

    for (String query : queries) {
        if (queryPattern.matcher(query).find() == false) {
            System.out.println("Non Ebay site: " + query + " " + queryPattern.matcher(query).find());
        }
    }

输出:

Non Ebay site: naebay.com false
Non Ebay site: ru.naebay.ru false
Non Ebay site: blah.ru false

关于java - 正则表达式匹配否定到 ebay 网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16539453/

相关文章:

jsp - 将 Java Restful Service 中的值填充到 JSP 页面中

java - 每个请求的 Apache HttpClient 自定义动态 header

javascript - 正则表达式 - 从字符串中删除除第一个数字之后的特定字符

ruby - 使用 Ruby 1.8.7,当字符串未与特定文本绑定(bind)时,是否进行正则表达式替换?

java - String 的 replaceAll() 方法和转义字符

regex - 解析日志文件,检查日期,报告结果

java - 每次我在 flex 中刷新浏览器时如何获得警告消息

java - 通过 onClick 传递字符串 var

一台服务器上的 Java SSLHandshakeException 而另一台服务器上没有?

javascript - 如何将字符串中的 <br> 解析为 VUE.js 中的 html 标记