首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对域名的要求?

对域名的要求?
EN

Stack Overflow用户
提问于 2021-06-11 16:52:30
回答 1查看 47关注 0票数 1

我试图清理使用regex的网站列表。这是我将通过脚本输入的文本文件中的一个示例行:

代码语言:javascript
运行
复制
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

其目标是只将域提取出来:

代码语言:javascript
运行
复制
meishij.net, shanxi.gov.cn, etc

到目前为止,这就是我所拥有的:

代码语言:javascript
运行
复制
re.findall(r"\w+\.com|\.cn|\.ru|\.gov|\.cc|\.life|\.net|\.org", ...

它适用于.com:

代码语言:javascript
运行
复制
['it168.com']
['alibaba.com']
['.cn']
['.cn']

但是,除了.com之外,任何其他顶级域都只能提取顶级域本身,而不是整个域名。我认为使用|作为OR可以循环通过顶级域来匹配。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-11 16:55:59

只需使用一些老式但功能强大的字符串函数:

代码语言:javascript
运行
复制
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)

产额

代码语言:javascript
运行
复制
['pcpop.com', '1234567.com.cn', 'shanxi.gov.cn', 'lss.gov.cn', 'meishij.net']

如果你坚持的话,你需要围绕你的选择组成一个非捕获组:

代码语言:javascript
运行
复制
re.findall(r"\w+(?:\.com|\.cn|\.ru|\.gov|\.cc|\.life|\.net|\.org)")
#              ^^^
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67940793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档