【发布时间】:2019-06-22 04:18:03
【问题描述】:
在 PostgreSQL 中使用。 我有一组字符串,例如:
xxx Heartbeat
yyy Heartbeat
xxx Code Red Entry/Exit
yyy Code Red Entry/Exit
xxx TFTP Server Heartbeat
yyy TFTP Server Heartbeat
我需要拆分第二部分,它位于未知字符串 xxx/yyy 之后,其中可以有空格。在我有不交叉的搜索字符串并使用以下排序之前:
SUBSTRING(description, '(?i).*(Code Red Entry/Exit|TFTP Server Heartbeat).?')
但是在我有了另一个(心跳)选项之后,如果我使用,这个正则表达式开始在所有情况下都只选择“心跳”
SUBSTRING(description, '(?i).*(Code Red Entry/Exit|TFTP Server Heartbeat|Heartbeat).?')
我该如何解决?
更新。 基本上我需要一个正则表达式替代下一个代码:
CASE WHEN description ILIKE '%TFTP Server Heartbeat' THEN 'TFTP Server Heartbeat'
WHEN description ILIKE '%Heartbeat' THEN 'Heartbeat'
WHEN description ILIKE '%Code Red Entry/Exit' THEN 'Code Red Entry/Exit'
etc...
END
【问题讨论】:
-
这里的搜索逻辑是什么?您想在这些字符串中找到某些关键字吗?或者,您只是想自己匹配整个字符串?
-
我正在尝试自己找到确切的字符串。如果我有“TFTP 服务器心跳”——我需要输出“TFTP 服务器心跳”而不是“心跳”。否则,如果我有一些以“心跳”结尾但没有“TFTP 服务器”的文本 - 我需要获取“心跳”。实际上,我目前有 15 种不同的选项,但仅交叉匹配“TFTP 服务器心跳”和“心跳”
标签: regex string postgresql