用于从HTTP查询字符串中提取键值对的正则表达式

时间:2017-10-23 08:18:18

标签: regex querystringparameter alteryx

我正在使用一个数据分析包,它公开了一个用于字符串解析的Regex函数。我试图解析一个格式为......的网站的回复。

key1=val1&key2=val2&key3=val3 ...

[键和值可能是百分比编码,但当前返回值不是,当前返回值是标记和其他字母数字信息]。

我理解这些数据是www-form-urlencoded,或者它可能被称为查询字符串格式。

如果不能依赖键的顺序,则对象是提取给定键的值。例如,我可能知道我应该收到的一个键是“token”,那么我可以使用什么正则表达式模式来提取键“token”的值?我已经搜索了这个,但找不到任何可以满足我需要的东西,但是如果有重复的问题,请提前道歉。

1 个答案:

答案 0 :(得分:2)

在Alteryx中,您可以将 Tokenize 与正则表达式一起使用,该正则表达式包含您需要提取的部分周围的捕获组:

  

Tokenize方法允许您指定要匹配的正则表达式,并将该部分字符串解析为单独的列(或行)。使用 Tokenize 方法时,您希望匹配整个令牌,如果您有标记的组,则只返回该部分

我粗略地说明了方法描述的一部分,证明如果有一个捕获组,则只返回此部分而不是整个匹配。

因此,您可以使用

(?:^|[?&])token=([^&]*)

而不是token,您可以使用要提取的值的任何键。

请参阅regex demo

<强>详情

  • (?:^|[?&]) - 字符串的开头,?&(如果字符串只是一个普通的键值对字符串,则可以省略?并使用(?:^|&)(?<![^&])
  • token - 密钥
  • = - 等号
  • ([^&]*) - 第1组(将被提取):除&以外的0个或多个字符(如果您不想提取空值,请将*替换为{{1}量词)。