用于从 URL 中提取值的正则表达式

Posted

技术标签:

【中文标题】用于从 URL 中提取值的正则表达式【英文标题】:RegEx for extracting a value from URLs 【发布时间】:2019-05-17 18:02:25 【问题描述】:

我有以下字符串,我想使用正则表达式提取 POOL。

/costs/quotes/questions?api_key=b03f8da1faaf643806b1282c0e1177a0c54f3bc7&funnel=12&buttons=btn-dark-orange&category=22&zip_code=76102&phone=888-668-8262&step=1&step1_title=Where can we contact you?&source_position=landing-page-top-start-here-its-free&attributes="category":"22","service_code":"POOL"&ref=www.xyz.com/cost-pool-builders-fort-worth-tx

我该如何解决这个问题?

【问题讨论】:

作为一个新的 SO 用户,我建议你阅读How to ask,特别是How to create a Minimal, Complete, and Verifiable example 【参考方案1】:

欢迎!

这个表达式可能会帮助你做到这一点:

(.*"service_code":")(.*?)(".*)

它有三个捕获组,只是为了简单调用。你可以从第二组$2获取你想要的数据。

Demo

正则表达式

如果这不是您想要的表达方式,您可以在regex101.com 中修改/更改您的表达方式。

正则表达式电路

您还可以在jex.im 中可视化您的表达式:

javascript 演示

const regex = /(.*"service_code":")(.*?)(".*)/gm;
const str = `/costs/quotes/questions?api_key=b03f8da1faaf643806b1282c0e1177a0c54f3bc7&funnel=12&buttons=btn-dark-orange&category=22&zip_code=76102&phone=888-668-8262&step=1&step1_title=Where can we contact you?&source_position=landing-page-top-start-here-its-free&attributes="category":"22","service_code":"POOL"&ref=www.xyz.com/cost-pool-builders-fort-worth-tx`;
const subst = `$2`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);

【讨论】:

【参考方案2】:

以下 BigQuery 标准 SQL 示例

#standardSQL
WITH `project.dataset.table` AS (
  SELECT '/costs/quotes/questions?api_key=b03f8da1faaf643806b1282c0e1177a0c54f3bc7&funnel=12&buttons=btn-dark-orange&category=22&zip_code=76102&phone=888-668-8262&step=1&step1_title=Where can we contact you?&source_position=landing-page-top-start-here-its-free&attributes="category":"22","service_code":"POOL"&ref=www.xyz.com/cost-pool-builders-fort-worth-tx' col
)
SELECT REGEXP_EXTRACT(col, r'&attributes=.*?"service_code":"(.*?)"') AS service_code
FROM `project.dataset.table`

结果

Row service_code     
1   POOL     

【讨论】:

以上是关于用于从 URL 中提取值的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

从两种不同的 url 格式中提取数字的单个正则表达式?

使用正则表达式从 URL 中提取***域和二级域

如何使用正则表达式从字符串中提取第 n 个 URL?

使用正则表达式从 url 中提取参数值

使用正则表达式从 url 中提取参数值

使用 Java + 正则表达式从文本文档中提取 URL