代码之家  ›  专栏  ›  技术社区  ›  Clone

Regex从以下网址获取example.comhttps://www.subdomain.example.com/folder/

  •  0
  • Clone  · 技术社区  · 2 年前

    我正在努力计算所有领域 example 和扩展 .com (又名顶级域)从一个文本中可以包括链接,但我完全失败了,因为它也匹配子域,而且有时域是扩展名。

    球门

    https://www.subdomain.example.com/folder/folder  -> example.com
    example.com/folder/folder                        -> example.com
    www.subdomain.example.com/folder/folder          -> example.com
    example.com                                      -> example.com
    www.example.com                                  -> example.com
    subdomain.example.com                            -> example.com
    

    尝试1:

    (?:(?:www?).)?\b((xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}\b
    

    Regex Demo

    尝试2:

    (?:(?:https?|ftp):\/\/)?[\w/\-?=%.]+\.[\w/\-&?=%.]+
    

    Regex Demo

    0 回复  |  直到 2 年前
        1
  •  0
  •   Sam    2 年前

    像这样的事情可能会奏效,或者是一个开始: https://regex101.com/r/1UMjML/1 (略微更新了regex)

    正则表达式: (?<=https?://)(?:\w+\.)+(?<domain>\w+\.\w+)[/\s$]

        2
  •  0
  •   0x263A    2 年前

    一个简单的解决方案是匹配任何后面跟着tld的东西:

    \w+\.com
    

    regex101.com

    然后,您可以通过在开头和结尾填充您想要匹配的内容来使其更加明确,例如:

    (?:https:\/\/.*?)?(\w+\.com)