Java - 需要一些Regex模式的帮助来匹配http和https

时间:2012-03-09 20:50:31

标签: java regex

我正在努力让我的正则表达式模式匹配。这是我的要求......

将以下域名(google.com)与http和https匹配。

我有各种网址的数组列表......

http://stackoverflow.com/questions/ask
https://ask.com/search
http://google.com/images
https://google.com/images

这是我的模式:

final Pattern p = Pattern.compile( "(http:(?!.*google.com).*)" );

但是,它现在对我的所有网址都返回true。

同样,如果http://www.google.comhttps://www.google.com与我当前的网址匹配,我只希望它返回true。

6 个答案:

答案 0 :(得分:1)

.contains("//google.com")怎么样?或者如果"google.com"位于第七或第八位?

答案 1 :(得分:1)

使用此:

Pattern.compile("^(https?://(?![^.]*\\.google\\.com)[^/]*)");

答案 2 :(得分:1)

java.net.URI或URL类怎么样......

try {
    URI url = new URI("https://www.google.com/foo?test=horse");
    System.out.println(url.getScheme()); // https
    System.out.println(url.getHost()); // www.google.com
    System.out.println(url.getPath()); // /foo
    System.out.println(url.getQuery()); // test=horse
} catch (URISyntaxException e) {
    e.printStackTrace();
}

编辑:我使用了URI,因为我记得在某个地方看到URL有副作用。刚检查过,hashCode()方法进行DNS查找。因此,如果您只想重新使用URL解析功能,请坚持使用URI ...请参阅此question

答案 3 :(得分:0)

final Pattern p = Pattern.compile( "(https?:(?!.*google.com).*)" );

答案 4 :(得分:0)

  

我只希望它在http://www.google.com或者https://www.google.com时返回true   {{3}}与我当前的网址匹配。

Pattern.compile("(?i)^https?://www\\.google\\.com\\z");

答案 5 :(得分:0)

    String[] urls = new String[] {
        "http://stackoverflow.com/questions/ask",
        "https://ask.com/search",
        "http://google.com/images",
        "https://google.com/images",
        "http://www.google.com"
    };

    final Pattern p = Pattern.compile( "https?://.*?google\\.com.*?" );

    for (String url : urls) {
        Matcher m = p.matcher(url);
        System.out.println(m.matches());
    }

输出是:

   false
   false
   true
   true
   true