【问题标题】:How to parse out a string in reverse by using sql regular expressions如何使用sql正则表达式反向解析出字符串
【发布时间】:2015-11-16 12:04:22
【问题描述】:

我需要回溯一个字符串以解析出一个特定的值。有没有办法通过使用正则表达式来获得所需的输出。

;2N9XsPQQ;PARAMETER_STRING=

必需的 o/p :2N9XsPQQ

提前致谢

【问题讨论】:

  • 我不清楚您所说的“回溯”或“反向解析字符串”是什么意思。从您的示例中,我只能推断出您想要用分号分隔的值。你能澄清一下吗?
  • @Dileep:如果建议的解决方案对您有效,请接受或解释原因,我会尝试相应地修复。

标签: regex netezza nsregularexpression


【解决方案1】:

试试这个

\;([0-9a-zA-Z]+)\;.*?\=

https://regex101.com/r/vC6nZ7/1

【讨论】:

    【解决方案2】:

    我觉得很简单:

    NSString *pattern = @"(?<=;).*(?=;)"; //or equivalent
    

    将为您完成工作。

    在线demo

    更新

    在 Netezza SQL 上,lookbehind 不可用,因此请尝试其中一种替代解决方案:

    # Tested on Postgresql (no Netezza, postgres derived db, available atm)
    SELECT regexp_matches('123abc;2N9XsPQQ;PARAMETER_STRING=',';(.*);');
    # OR
    SELECT regexp_replace('123abc;2N9XsPQQ;PARAMETER_STRING=','.*;(.*);.*','\1');
    

    【讨论】:

    • 我正在尝试使用 Netezza SQL 解析出字符串。它给我null。 dldhhahddsahhgdgsagdjsdg5dcdsa5;2N9XsPQQ;PARAMETER_STRING=dsagD%SDBHSDBAHS^ 这就像我的字符串。
    • @Dileep:我无法针对 Netezza SQL 进行测试,我已经在 Postgres(从中派生出 Netezza)上进行了测试。我很确定这两种方法都是正确的。告诉我
    猜你喜欢
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2019-12-10
    • 2010-11-22
    相关资源
    最近更新 更多