【问题标题】:Regular expression for repeating pattern重复模式的正则表达式
【发布时间】:2018-07-27 19:06:23
【问题描述】:

我有以下输入文本:

pagelimit=50&filtercolumn=Datacenter&filtervalue=abfg1&filtercolumn=MachineType&filtervalue=fg&filtercolumn=GPG&filtervalue=IPMI

我想回来

  1. filtercolumn=Datacenter&filtervalue=abfg1
  2. filtercolumn=MachineType&filtervalue=fg
  3. filtercolumn=GPG&filtervalue=IPMI

这些数量可能不限。

我已经尝试了一些东西。我目前正在尝试这样的事情:

(?:((filtercolumn=.*&filtervalue=.*)+)?)

但它当然行不通。我明白了:

  1. filtercolumn=Datacenter&filtervalue=abfg1&filtercolumn=MachineType&filtervalue=fg&filtercolumn=GPG&filtervalue=IPMI
  2. filtercolumn=Datacenter&filtervalue=abfg1&filtercolumn=MachineType&filtervalue=fg&filtercolumn=GPG&filtervalue=IPMI

【问题讨论】:

标签: regex go


【解决方案1】:

试试这个\bfiltercolumn=[^&]*&filtervalue=[^&]*

https://regex101.com/r/sasmXL/2

【讨论】:

  • 绝对可以在那个网站上工作。现在尝试在 go 中尝试一下。 \b 在做什么?
  • 这只是一个单词边界,它会阻止匹配像autofiltercolumn=...&filtervalue=...这样的东西
  • 可能在做一些愚蠢的事情。但我有a := regexp.MustCompile("\bfiltercolumn=[^&]*&[^&]*") var c = a.Split(r.URL.RawQuery, -1) 返回一个单项数组:pagelimit=50&filtercolumn=Datacenter&filtervalue=vin1&filtercolumn=MachineType&filtervalue=sd&filtercolumn=APC&filtervalue=IPMI
  • 我不使用 go lang,所以我无法帮助您使用正则表达式。如果正则表达式在 golang 标记下的 regex101 上工作,它肯定在代码中工作。我会检查以确保它是一个全局匹配,并且 "\b" 也不需要转义 "\\b"
  • 我只需要使用 FindAllString 而不是拆分。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2016-11-16
  • 2016-01-11
  • 2021-06-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多