【问题标题】:Extracting a matching pattern using Regex使用正则表达式提取匹配模式
【发布时间】:2021-06-11 20:28:09
【问题描述】:

用例是提取在=(等号)中没有填充任何值的字符串 例如:在下面的示例中,给定输入字符串:

something=na&rows[0][data]=0&rows[0][name]=&rows[0][indexable]=true&rows[0][searchable]=false&columns[0][search][value]=&

我们想匹配以下内容

&rows[0][name]=
&columns[0][search][value]=

我尝试使用这个正则表达式 &(.*?)=& ,但这里的问题是它匹配这样的东西 &rows[0][data]=0&rows[0][name]=& 这是不正确的。它需要匹配字符串 &rows[0][name]= 我们在正则表达式中将此类搜索称为什么也会有所帮助? (正向预测?)

【问题讨论】:

    标签: regex regex-lookarounds regex-group


    【解决方案1】:

    您可以使用带有正向前瞻的否定字符类:

    &[^&=]+=(?=&)
    

    模式匹配

    • & 匹配一个 & 字符
    • [^&=]+ 匹配除&= 之外的任何字符1+ 次
    • =(?=&) 匹配 =,使用正向前瞻将 & 字符直接断言到右侧

    Regex demo

    作为不使用前瞻的替代方法,您还可以使用捕获组与以下& 匹配:

    (&[^&=]+=)&
    

    Regex demo

    【讨论】:

      猜你喜欢
      • 2011-01-12
      • 1970-01-01
      • 2015-03-08
      • 1970-01-01
      • 2013-02-02
      相关资源
      最近更新 更多