添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
老实的玉米  ·  飞猪 - 开放平台·  1 年前    · 
逃跑的键盘  ·  RapidJSON —— C++ 快速 ...·  2 年前    · 

Oracle 使用regexp_substr从长字符串中提取多个主机名

ASKTOM 2021-04-07
522

问题描述

嗨,汤姆,

我正在尝试从一个长字符串中提取多个主机名 (实际上,稍后我将对DBLink-host列使用此方法)。但是,我的查询只能提取第一个主机名。我确实尝试将 {1,0} 放在匹配模式之后 ((主机 | 主机名)[[: 空格:]]*(\ =)[[: 空格:]]*(\ w | \-|\_)*(\.\ w )* |(\ w | \-|\_)*(\.\ w ) |((\ w | \-|\_) $)){1,} ',但仍然无法提取其余的出现匹配。你能帮我吗?谢谢。

= = 查询输出 ===

主机名
--------------------
LXC01-VIP.TEST.COM


预期产出
--------------------
LXC01-VIP.TEST.COM LXC02-VIP.TEST.COM

-我当前的查询-

SELECT 
       REGEXP_REPLACE (
          REGEXP_REPLACE (
             REGEXP_REPLACE (
                REGEXP_SUBSTR (
                   UPPER (
                      '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = lxc01-vip.test.com)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = lxc02-vip.test.com)(PORT = 1521)) (LOAD_BALANCE = ON) (FAILOVER = ON) ) (CONNECT_DATA = (SERVICE_NAME = Test) ) )'),
                   '((HOST|主机名)[[:space:]]*(\=)[[:space:]]*(\w+|\-|\_)*(\.\w+)*|(\w+|\-|\_)*(\.\w+)+|((\w+|\-|\_)+$))'),
             'HOST=',
          '主机名=',