【问题标题】:Regex for matching a string until the first occurrence of a delimiter [duplicate]用于匹配字符串直到第一次出现分隔符的正则表达式 [重复]
【发布时间】:2019-09-26 09:12:45
【问题描述】:

我有一个字符串,我需要匹配一个模式,并在模式匹配后第一次出现分隔符后丢弃字符串的其余部分

示例字符串:

_fw_xx_app_id = XXXXX&adobe_id = 59742375247590810332565440942222920249&krux_user = YYYYYYY&User_Agent类= ZZZZZZ&_fw_did_idfa = AAAAAAA&_fw_dpr = 2.00&_fw_ae =非验证&_fwu%3A386123%3Atqxqle5of = 1&_fwu%3A386123%3Atshc3wdb8 = 1 P>

我只想提取键 '_fw_ae=' 之后的值,直到第一次出现 &

我试过了

regexp_substr(all_request_kv,'_fw_ae=(.+?)&|$',1,1,'e')

但这会带来 _fw_ae= 之后的所有内容 如下所示

_fw_ae=未认证&_fwu%3A386123%3Atqxqle5of=1&_fwu%3A386123%3Atshc3wdb8=1 在此示例中,我只希望未进行身份验证

【问题讨论】:

    标签: regex string regex-negation regex-greedy


    【解决方案1】:

    您可以在捕获组中使用与 & 不匹配的否定字符类 [^&],而不是非贪婪量词:

    _fw_ae=([^&]+)
    

    Regex demo

    【讨论】:

    • 工作就像一个魅力,谢谢!我在雪花上做
    • 不客气。我认为这是documentation,您可以将其用作参考来检查支持的内容。我看到它使用 POSIX ERE,据我所知,它不支持像 .+? 这样的非贪婪量词
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多