gpt4 book ai didi

python - 从字符串中解析多个 FQDN

转载 作者:行者123 更新时间:2023-12-01 02:35:54 25 4
gpt4 key购买 nike

给定一个主域,我尝试从字符串中提取它及其子域。
例如,对于主域 example.co 我想要:

  • 仅提取主域名和子域名 - example.cowww.example.couat.smile.example.co
  • 不是延伸到右侧的拾取名称 - 没有 www.example.comwww.example.co.nz
  • 忽略 FQDN 中不合法的任何空格或标点字符作为分隔符

目前我从以下位置收到不需要的元素:
example.com
example.co.nz
test-me.www.example.co 还包含尾随空格。

>>> domain = 'example\.co'
>>> line = 'example.com example.co.nz www.example.co. test-me.www.example.co bad.example-co.co'
>>> re.findall("[^\s\',]*{}[\s\'\,]*".format(domain), line)
['example.co', 'example.co', 'www.example.co', 'test-me.www.example.co ']

我应该使用正则表达式吗?如果是这样,我们将非常感谢有关解决此问题的指导。
否则有更好的工具来完成这项工作吗?

编辑 - 验证了 Marc Lambrichs 的答案,但对于下面所示的情况失败了:

import re

pattern = r"((?:[a-zA-Z][\w-]+\.)+{}(?!\w))"
domain = 'google.com'
line = 'google.com mail is handled by 20 alt1.aspmx.l.google.com.'
results = re.findall(pattern.format(re.escape(domain)), line)
print(results)
[]

另外,我想传递像“google.com”这样的字符串而不是“google.com”,并使用 rere.escape(domain) 代码进行转义无论哪种方式都返回空列表。

最佳答案

您可以使用正则表达式来实现此目的,而无需进行任何拆分。

$ cat test.py
import re

tests = { 'example.co': 'example.com example.co.nz www.example.co. test-me.www.example.co bad.example-co.co',
'google.com': 'google.com mail is handled by 20 alt1.aspmx.l.google.com.'}


pattern = r"((?:[a-zA-Z][-\w]*\.)*{}(?!\w))"

for domain,line in tests.iteritems():
domain = domain.replace(".", "\\.")
results = re.findall(pattern.format(domain), line)
print results

给出结果:

$ python test.py
['google.com', 'alt1.aspmx.l.google.com']
['example.co', 'www.example.co', 'test-me.www.example.co']

正则表达式的解释

(                  # group 1 start
(?: # non-capture group
[a-zA-Z] # rfc 1034. start subdomain with a letter
[\w-]*\. # 0 or more word chars or '-', followed by '.'
)* # repeat this non-capture group 0 or more times
example.co # match the domain
(?!\w) # negative lookahead: no following word char allowed.
) # group 1 end

关于python - 从字符串中解析多个 FQDN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46231276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com