Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于域名的python正则表达式_Python_Regex_Url_Dns - Fatal编程技术网

用于域名的python正则表达式

用于域名的python正则表达式,python,regex,url,dns,Python,Regex,Url,Dns,我尝试使用下面的正则表达式从文本中提取域名,但它什么也不产生,有什么问题吗?我不知道这是否适合问这个“修复代码”的问题,也许我应该读更多。我只是想节省一些时间。 谢谢 pat_url=re.compile(r'' (?:https?:/)* (?:[\w]+[\-\w]+[.])* (?P[\w\-]*[\w.](com | net)([.](中国|日本|美国))*[/]*) ''') 打印关于findall的文件(pat_url,“http://www.google.com/abcde")

我尝试使用下面的正则表达式从文本中提取域名,但它什么也不产生,有什么问题吗?我不知道这是否适合问这个“修复代码”的问题,也许我应该读更多。我只是想节省一些时间。 谢谢

pat_url=re.compile(r''
(?:https?:/)*
(?:[\w]+[\-\w]+[.])*
(?P[\w\-]*[\w.](com | net)([.](中国|日本|美国))*[/]*)
''')
打印关于findall的文件(pat_url,“http://www.google.com/abcde")

我希望输出为google.com

不要为此使用正则表达式。改用
urlparse
标准库。它更直观,更易于阅读/维护


第一个问题是调用
re.compile()
时缺少
re.VERBOSE
标志。第二点是,您应该对返回的对象使用方法。第三,您使用的是一个正则表达式,而stdlib中已经存在一个合适的解析器。

我不相信这实际上是关于“回归”的,是吗?这是关于正则表达式的,这是一件完全不同的事情。也许有人应该修复标记。

这是使用正则表达式解析url的唯一正确方法:

它是C++的,但通过删除附加值,你会发现微不足道的转换为Python。并带有用于捕获的枚举

另请参见RFC3986作为regexp的原始源代码

static const char* const url_regex[] = {
    /* RE_URL */
    "^(([^:/?#]+):)?(//([^/?#]*)|///)?([^?#]*)(\\?[^#]*)?(#.*)?",
};

enum {
    URL = 0,
    SCHEME_CLN = 1,
    SCHEME  = 2,
    DSLASH_AUTH = 3,
    AUTHORITY = 4,
    PATH    = 5,
    QUERY   = 6,
    FRAGMENT = 7
};
此正则表达式使用找到的所有当前有效tld。它将获取一个文本列表,并仅返回
域。tld

喂它

  • www.hotmail.com
  • 雅虎网
会回来的

  • 谷歌网站
  • hotmail.com
  • 雅虎网

这并不理想,因为正则表达式很长,但它满足了我当时的需要,希望能有所帮助。

谢谢Dav,但是urlparse.netloc返回“www.google.com”?我想在文本中提取url,比如“>?urlparse.scheme+urlparse.netloc+urlparse.path应该会给出预期的结果。也许其他人都知道这一点,但urlparse.netloc是一个成员变量,而不是一个函数。例如:
p=urlparse.urlparse(url);print p.netloc
prints
host.example.com
urlparse.netloc
不一定是域名。它可能是IP地址或非域名。您可能需要获取
http://localhost
,但是像
http://example_com
也会通过。但是这些键就像……紧挨着彼此:P也,答案框不是对问题进行评论的地方。哦..详细的回答很有效。谢谢
static const char* const url_regex[] = {
    /* RE_URL */
    "^(([^:/?#]+):)?(//([^/?#]*)|///)?([^?#]*)(\\?[^#]*)?(#.*)?",
};

enum {
    URL = 0,
    SCHEME_CLN = 1,
    SCHEME  = 2,
    DSLASH_AUTH = 3,
    AUTHORITY = 4,
    PATH    = 5,
    QUERY   = 6,
    FRAGMENT = 7
};
([a-z0-9][-a-z0-9]*[a-z0-9]|[a-z0-9])\.(COMMUNITY|DIRECTORY|EDUCATION|EQUIPMENT|INSTITUTE|MARKETING|SOLUTIONS|XN--J1AMH|XN--L1ACC|BARGAINS|BOUTIQUE|BUILDERS|CATERING|CLEANING|CLOTHING|COMPUTER|DEMOCRAT|DIAMONDS|GRAPHICS|HOLDINGS|LIGHTING|PARTNERS|PLUMBING|TRAINING|VENTURES|XN--P1AI|ACADEMY|CAREERS|COMPANY|CRUISES|DOMAINS|EXPOSED|FLIGHTS|FLORIST|GALLERY|GUITARS|HOLIDAY|KITCHEN|RECIPES|RENTALS|REVIEWS|SHIKSHA|SINGLES|SUPPORT|SYSTEMS|AGENCY|BERLIN|CAMERA|CENTER|COFFEE|CONDOS|DATING|ESTATE|EVENTS|EXPERT|FUTBOL|KAUFEN|LUXURY|MAISON|MONASH|MUSEUM|NAGOYA|PHOTOS|REPAIR|REPORT|SOCIAL|TATTOO|TIENDA|TRAVEL|VIAJES|VILLAS|VISION|VOTING|VOYAGE|BUILD|CARDS|CHEAP|CODES|DANCE|EMAIL|GLASS|HOUSE|NINJA|PARTS|PHOTO|SHOES|SOLAR|TODAY|TOKYO|TOOLS|WATCH|WORKS|AERO|ARPA|ASIA|BIKE|BLUE|BUZZ|CAMP|CLUB|COOL|COOP|FARM|GIFT|GURU|INFO|JOBS|KIWI|LAND|LIMO|LINK|MENU|MOBI|MODA|NAME|PICS|PINK|POST|QPON|RICH|RUHR|SEXY|TIPS|WANG|WIEN|ZONE|BIZ|CAB|CAT|CEO|COM|EDU|GOV|INT|KIM|MIL|NET|ONL|ORG|PRO|RED|TEL|UNO|WED|XXX|AC|AD|AE|AF|AG|AI|AL|AM|AN|AO|AQ|AR|AS|AT|AU|AW|AX|AZ|BA|BB|BD|BE|BF|BG|BH|BI|BJ|BM|BN|BO|BR|BS|BT|BV|BW|BY|BZ|CA|CC|CD|CF|CG|CH|CI|CK|CL|CM|CN|CO|CR|CU|CV|CW|CX|CY|CZ|DE|DJ|DK|DM|DO|DZ|EC|EE|EG|ER|ES|ET|EU|FI|FJ|FK|FM|FO|FR|GA|GB|GD|GE|GF|GG|GH|GI|GL|GM|GN|GP|GQ|GR|GS|GT|GU|GW|GY|HK|HM|HN|HR|HT|HU|ID|IE|IL|IM|IN|IO|IQ|IR|IS|IT|JE|JM|JO|JP|KE|KG|KH|KI|KM|KN|KP|KR|KW|KY|KZ|LA|LB|LC|LI|LK|LR|LS|LT|LU|LV|LY|MA|MC|MD|ME|MG|MH|MK|ML|MM|MN|MO|MP|MQ|MR|MS|MT|MU|MV|MW|MX|MY|MZ|NA|NC|NE|NF|NG|NI|NL|NO|NP|NR|NU|NZ|OM|PA|PE|PF|PG|PH|PK|PL|PM|PN|PR|PS|PT|PW|PY|QA|RE|RO|RS|RU|RW|SA|SB|SC|SD|SE|SG|SH|SI|SJ|SK|SL|SM|SN|SO|SR|ST|SU|SV|SX|SY|SZ|TC|TD|TF|TG|TH|TJ|TK|TL|TM|TN|TO|TP|TR|TT|TV|TW|TZ|UA|UG|UK|US|UY|UZ|VA|VC|VE|VG|VI|VN|VU|WF|WS|YE|YT|ZA|ZM|ZW)(?![-0-9a-z])(?!\.[a-z0-9])