我试图清理使用regex的网站列表。这是我将通过脚本输入的文本文件中的一个示例行:
419 pcpop.com IT 4,675
420 1234567.com.cn Finanace 4,512
424 shanxi.gov.cn Others 3,633
425 lss.gov.cn Others 5,513
426 meishij.net Local Information 5,450其目标是只将域提取出来:
meishij.net, shanxi.gov.cn, etc到目前为止,这就是我所拥有的:
re.findall(r"\w+\.com|\.cn|\.ru|\.gov|\.cc|\.life|\.net|\.org", ...它适用于.com:
['it168.com']
['alibaba.com']
['.cn']
['.cn']但是,除了.com之外,任何其他顶级域都只能提取顶级域本身,而不是整个域名。我认为使用|作为OR可以循环通过顶级域来匹配。
发布于 2021-06-11 16:55:59
只需使用一些老式但功能强大的字符串函数:
junk = """
419 pcpop.com IT 4,675
420 1234567.com.cn Finanace 4,512
424 shanxi.gov.cn Others 3,633
425 lss.gov.cn Others 5,513
426 meishij.net Local Information 5,450
"""
domains = [parts[1].strip()
for line in junk.split("\n") if line
for parts in [line.split()] if len(parts) > 1]
print(domains)产额
['pcpop.com', '1234567.com.cn', 'shanxi.gov.cn', 'lss.gov.cn', 'meishij.net']如果你坚持的话,你需要围绕你的选择组成一个非捕获组:
re.findall(r"\w+(?:\.com|\.cn|\.ru|\.gov|\.cc|\.life|\.net|\.org)")
# ^^^https://stackoverflow.com/questions/67940793
复制相似问题