gpt4 book ai didi

java - 解析已知部分的字符串

转载 作者:行者123 更新时间:2023-12-01 19:18:55 25 4
gpt4 key购买 nike

我想知道从 oracle 连接字符串中解析“HOST”名称的最佳方法是什么。下面是一个连接字符串示例:

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)))

我把它放在一个字符串中。返回“MyHost”的最佳方式是什么?如果它适用于双连接字符串也很好,例如:

((Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost1)(PORT=MyPort1)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID1))))(Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost2)(PORT=MyPort2)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID2)))))

将返回“MyHost1”和“MyHost2”。

尝试编写一个方法,该方法接收连接字符串并在字符串数组列表中吐出一个或多个主机。

最佳答案

使用这样的正则表达式应该有效:\(HOST=([^)]+)\)

不要忘记在 Java String 文字中使用双反斜杠:

Pattern hostPattern = Pattern.compile("\\(HOST=([^)]+)\\)");

创建 Matcher从该 Pattern 和您的输入字符串中使用 matcher()并调用find()直到返回false。使用group(1)获取主机名:

Matcher m = hostPattern.matcher(input);
while (m.find()) {
System.out.println(m.group(1));
}

关于java - 解析已知部分的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5299273/

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