繁体   English   中英

在Java中使用正则表达式匹配子域和顶级域

Matching subdomain and top domain using regex in Java

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

跟踪此问题正则表达式以将模式与Java中的子域匹配

我使用以下模式来匹配域和子域

  Pattern pattern = Pattern.compile("http://([a-z0-9]*.)example.com");

该模式匹配以下内容

  • http://asd.example.com
  • http://example.example.com
  • http://www.example.com

但不匹配

  • http://example.com

谁能告诉我如何搭配http://example.com

2 个回复

只需使第一部分为可选?

Pattern pattern = Pattern.compile("http://([a-z0-9]*\\.)?example\\.com");

注意. 匹配任何字符,您应该使用\\\\. 匹配文字点。

您可以使用此正则表达式模式来获取所有网址的域:

\\p{L}{0,10}(?:://)?[\\p{L}\\.]{1,50}

例如;

Input  = http://www.google.com/search?q=a
Output = http://www.google.com

Input  = ftp://www.google.com/search?q=a
Output = ftp://www.google.com

Input  = www.google.com/search?q=a
Output = www.google.com

在这里,\\ p {L} {0,10}代表http,https和ftp部分(可能还有一些我不知道的部分),(?:: //)? 代表://部分(如果出现),[\\ p {L} \\。] {1,50}代表foo.bar.foo.com部分。 其余的网址被删除。

这是完成这项工作的Java代码:

public static final String DOMAIN_PATTERN = "\\p{L}{0,10}(?:://)?[\\p{L}\\.]{1,50}";

public static String getDomain(String url) {
    if (url == null || url.equals("")) {
        return "";
    }
    Pattern p = Pattern.compile(DOMAIN_PATTERN);
    Matcher m = p.matcher(url);

    if (m.find()) {
        return m.group();
    }
    return "";
}

public static void main(String[] args) {
    System.out.println(getDomain("www.google.com/search?q=a"));
}

Output = www.google.com

最后,如果您只想匹配“ example.com”,则可以将其添加到模式的末尾,例如:

\\p{L}{0,10}(?:://)?[\\p{L}\\.]{0,50}example\\.com

这将使用“ example.com”获取所有域:

Input  = http://www.foo.bar.example.com/search?q=a
Output = http://www.foo.bar.example.com

注意:请注意,可以使用\\ p {Ll}代替\\ p {L},因为\\ p {Ll}捕获小写的unicode字母(\\ p {L}各种unicode字母),并且url由小写字母构成。

1 正则表达式匹配子域

我需要一个与特定域的所有子域匹配的正则表达式。 内容媒体类型未知(例如ig可能是urlencoded,json等)到目前为止,我已经有了这个简单的正则表达式re, err := regexp.Compile(`([-a-z0-9])+[.](.*)domain.com`) 问题是,对于这 ...

2017-11-29 05:29:38 2 481   regex/ go
2 正则表达式以匹配子域(如果存在)和域(在Nginx中)

我需要一个正则表达式来提取子域(如果存在)和具有TLD的域。 这是用于Nginx配置的,因此请严格使用正则表达式。 例子: 示例行1应将a0和example.com分成组 示例行2应该仅将example.com匹配到一个组中,因为该子域不存在 示例第3行应仅将 ...

4 Java正则表达式以匹配url域

我想使用Java正则表达式来匹配url的域,例如,对于www.table.google.com,我想从url中获取“ google”,即该URL字符串中的倒数第二个单词。 任何帮助将不胜感激 !!! ...

5 Java正则表达式用于匹配域

我正在尝试制定一个正则表达式模式,该模式检查是否存在域,后跟/后跟任何字符。 例如,字符串https://example.com/对我来说很合适,但我想使字符串https://example.com/xyz无效,因为它具有域和路径。 目前,我已经提出了一种检查以https开头,后跟任何字 ...

7 正则表达式以匹配域

很难弄清楚这一点,感到很愚蠢... 我有许多类似/imagebuilder-ptop.asp?imgCode=166的网址,我所需要的是一个正则表达式,它将与/ imagebuilder-(匹配所有内容)相匹配 如果是/ imagebuilder-lkd fa; lsdfh adhf ...

2009-03-20 21:23:13 1 274   regex
8 正则表达式以匹配域

我想为Google Analytic使用一个正则表达式,以便可以匹配包括子域在内的所有域 说我们必须匹配一个名为xyz.com的域名 因此,我想匹配每个具有xyz.com网址。 例子 谁能帮助我。 我这样做的目的是要排除来自这些网站的Google Analytics(分析)中的流量报告。 ...

9 正则表达式匹配域

我需要一个正则表达式来匹配以下域,如下所示: 我有以下正则表达式(使用pcre): 上面的情况在2和3的情况下工作正常,但是在1的情况下我仍然将http://附加到匹配的字符串中,是否可以使用正则表达式选项来跳过http部分? 提前谢谢了 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM