You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R语言stringr包提取URL中utm_source值的正则问题

解决方法

问题出在你用的.*是贪婪匹配,它会从utm_source=后面一直匹配到URL中最后一个&的位置,所以才会带上后面的参数内容。可以用以下两种方式修正:

方案1:使用非贪婪匹配

把正则里的.*改成.*?,让匹配在遇到第一个&时就停止:

library(stringr)

urls <- c(
  "http://www.google.com?utm_source=site_corriere&utm_medium=video&utm_content=box",
  "http://www.google.com?utm_source=site_rep&utm_medium=display&utm_content=box",
  "http://www.google.com?utm_source=site_fattoquotidiano&utm_medium=social&utm_content=box",
  "http://www.google.com?utm_source=site_inter&utm_medium=video&utm_content=box",
  "http://www.google.com?utm_source=site_foglio&utm_medium=video&utm_content=box"
)

result <- str_extract(urls, "(?<=utm_source=).*?(?=&)")
print(result)

方案2:使用精准字符匹配(推荐)

因为utm_source的取值里不会包含&,可以直接匹配所有非&的字符,这种方式效率更高:

result <- str_extract(urls, "(?<=utm_source=)[^&]+")
print(result)

两种方案运行后都会得到你期望的结果:
[1] "site_corriere" "site_rep" "site_fattoquotidiano" "site_inter" "site_foglio"

内容的提问来源于stack exchange,提问作者paolotroia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 08:29:55