首页 > 解决方案 > 正则表达式查找带或不带 www 的有效 URL,包括点但不包括双点

问题描述

我试图找到一个匹配包含或不包含“www”的 URL 的正则表达式,后跟可以包含点的验证字符串,但不能包含两个或多个连续点。为简单起见,我将问题仅限于具有子域和 .com 域的 URL。例如:

www.aBC.com      #MATCH
abc.com          #MATCH
a_bc.de8f.com    #MATCH
a.com            #MATCH
abc              #NO MATCH
abc..com         #NO MATCH

我与正则表达式最接近的是\w+.[\w]+.com,但这与简单的“a.com”不匹配。我使用“\w”而不是“。” 因为否则我不知道如何避免按顺序排列两个或多个点。

任何帮助表示赞赏。

标签: pythonregexre

解决方案


采用

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

请参阅正则表达式证明

解释

-------------------------------------------------------------------------------
  (?:                      group, but do not capture (0 or more times
                           (matching the most amount possible)):
--------------------------------------------------------------------------------
    \w+                      word characters (a-z, A-Z, 0-9, _) (1 or
                             more times (matching the most amount
                             possible))
--------------------------------------------------------------------------------
    \.                       '.'
--------------------------------------------------------------------------------
  )*                       end of grouping
--------------------------------------------------------------------------------
  \w+                      word characters (a-z, A-Z, 0-9, _) (1 or
                           more times (matching the most amount
                           possible))
--------------------------------------------------------------------------------
  \.                       '.'
--------------------------------------------------------------------------------
  com                      'com'

推荐阅读