如何使用正则表达式在java中查找url模式

时间:2012-07-24 16:15:22

标签: regex url pattern-matching

我想知道给定的字符串(代表网址)是否来自同一个子域。 例如,具有myDomain.com组合的http://www.myDomain.com/someThing将返回true。以下是:

http://myDomain.com; http://www.domain.myDomain.com;

但下一个(非法的)网址不会 - “http://.myDomain.com”(请注意myDomain之前的点)

基本上,我需要一个代表myDomain.com之前的正则表达式 - 通常需要(http | https):// [az。] myDomain - 这意味着就在myDomain之前.com可能有字母后跟点(0次或更多次) - 但如果没有字母,也不应该有点。

有谁知道如何组装正则表达式?

3 个答案:

答案 0 :(得分:1)

http(s)?://([a-z]+\.)*myDomain\.com

答案 1 :(得分:1)

可以使用URL类和正则表达式的组合来完成:

    String url = "myDomain.com";
    String[] urlTest = {
        "http://www.myDomain.com/someThing",
        "http://myDomain.com",
        "http://www.domain.myDomain.com",
        "http://.myDomain.com",
        "http://example.com"

    };
    for (String urlx : urlTest) {
        System.out.print(urlx + "\t");
        try {
            URL u = new URL(urlx);
            String host = u.getHost();
            System.out.print("HOST=" + host + "\t");
            Matcher m = Pattern.compile("(.+\\.)?myDomain\\.com").matcher(host);
            System.out.println(m.matches());

        } catch (MalformedURLException ex) {
            System.out.println("false (no valid url)");
        }
    }

答案 2 :(得分:0)

在此处放置示例:

Pattern aPattern = Pattern.compile("https://example.com[^\"<$\n \\[\\])]+", 
Pattern.MULTILINE);
            Matcher aMatcher = aPattern.matcher(Big String);
while (aMatcher.find()) {
logger.info(aMatcher.group());
}