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

Regex for extracting key-value pair from HTTP Query String

我正在使用一个数据分析包,它公开了一个用于字符串解析的 Regex 函数。我正在尝试解析来自格式为...

的网站的响应
key1=val1&key2=val2&key3=val3 ...

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

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

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

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

The Tokenize Method allows you to specify a regular expression to match on and that part of the string is parsed into separate columns (or rows). When using the Tokenize method, you want to match to the whole token, and if you have a marked group, only that part is returned.

我将方法描述部分加粗,证明如果有捕获组,只会返回这部分,而不是整个匹配。

因此,您可以使用

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

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

参见regex demo

详情

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