You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python正则表达式提取TNS Ping输出中的主机信息?

从TNS Ping输出中提取主机名的正则表达式解决方案

问题

需要从TNS Ping的输出数据中提取所有主机信息,但原正则表达式无法正确匹配,也无法提取多个结果。

示例数据与原代码

DATA="""
TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 20-SEP-2023 12:13:43

Copyright (c) 1997, 2022, Oracle.  All rights reserved.

Used parameter files:
/oracle/rdbms/19.2/network/admin/sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (SDU=32767)(SEND_BUF_SIZE=16777216)(RECV_BUF_SIZE=16777216) (ADDRESS = (PROTOCOL = TCPS)(HOST = host1-1-ia2-vip.world.net)(PORT = 1523)) (ADDRESS = (PROTOCOL = TCPS)(HOST = host2-2-ia2-vip.world.net)(PORT = 1523)) (LOAD_BALANCE = YES) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = TESTDB92)))
OK (50 msec)
"""

# 原正则表达式无法匹配目标内容
m = re.search('HOST\s\w+\s(\w+)', DATA)
m.group(1)

期望输出

host1-1-ia2-vip.world.net
host2-2-ia2-vip.world.net

解决方法

原正则表达式存在两个问题:

  1. \w+ 仅匹配字母、数字和下划线,无法覆盖主机名中的连字符(-)和点号(.)
  2. re.search 仅返回第一个匹配结果,无法提取所有主机名

修正后的代码

import re

DATA="""
TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 20-SEP-2023 12:13:43

Copyright (c) 1997, 2022, Oracle.  All rights reserved.

Used parameter files:
/oracle/rdbms/19.2/network/admin/sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (SDU=32767)(SEND_BUF_SIZE=16777216)(RECV_BUF_SIZE=16777216) (ADDRESS = (PROTOCOL = TCPS)(HOST = host1-1-ia2-vip.world.net)(PORT = 1523)) (ADDRESS = (PROTOCOL = TCPS)(HOST = host2-2-ia2-vip.world.net)(PORT = 1523)) (LOAD_BALANCE = YES) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = TESTDB92)))
OK (50 msec)
"""

# 匹配所有HOST字段后的主机名
hosts = re.findall(r'HOST\s*=\s*([\w.-]+)', DATA)

# 打印结果
for host in hosts:
    print(host)

正则表达式说明

  • HOST\s*=\s*:匹配 HOST = 模式,\s* 兼容前后任意数量的空白字符(避免因空格数量不同导致匹配失败)
  • ([\w.-]+):捕获主机名,[\w.-] 允许匹配字母、数字、下划线、连字符和点号,覆盖标准主机名的合法字符

运行结果

host1-1-ia2-vip.world.net
host2-2-ia2-vip.world.net

内容的提问来源于stack exchange,提问作者user9599919

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:13:45