从 Slack 消息中解析域

Parsing domain from Slack message

从 Slack 消息中解析域的最佳方法是什么?我有一个 Slack 机器人,用于对提供的任何主机名执行查找。当机器人从 Slack 接收到有效负载时,域的格式为:<http://example.com|example.com>。对于这个应用程序,我只需要 example.com.

解析它的一种方法是使用“|”拆分字符串字符并删除“< >”字符并仅使用第二个元素。

msg = slack_response
strip1 = msg.replace(">", "")
strip2 = strip1.replace("<", "")

str_arr = strip2.split("|")

domain = str_arr[1]

有没有更好的methods/libraries可以用来解析域名?机器人不会总是收到域,它有时也可以是 IP 的形式,例如 8.8.8.8。我更愿意以一种可以处理这两种情况的方式来执行此操作。

您可以使用正则表达式,但由于 slack 的响应是可以预测的,我认为这可能有点过头了。

如果你想要一个衬垫,你可以做

msg.split("|")[-1][:-1]

但是,因为可读性很重要,所以我会推荐类似

的东西
start = msg.find("|") + 1
stop = msg.find{">")
domain = msg[start:stop]

这应该有效:

msg.replace('>', '').split('|')[1]