【问题标题】:Regex - Matching groups in URL parameters正则表达式 - URL 参数中的匹配组
【发布时间】:2012-06-19 12:42:05
【问题描述】:

我需要从这个字符串中提取值:

urlTest?paramA=valueA&paramB=valueB

所以,我是这样想的:

urlTest?paramA=(.*)&paramB=(.*)

但是,在某些情况下,我没有 paramB,或者,在某些情况下,我在 params 值中有 '&' 和 '='。

我该如何解决这个问题?

【问题讨论】:

  • 参数值中不应包含&=。正确编码的 url 将使用 %26%3D
  • 您使用的是什么编程语言?大多数都具有解析 URL 查询字符串的本机能力。
  • 这不是一个常见的 URL,所以很遗憾,我不能使用转义字符(%26 和 %3D)。我正在为 iOS (Objective-C) 编程,但如果有人帮助我使用其他语言的正则表达式,我会很高兴 =)。我正在使用它与某些屏幕进行交互。一个疯狂的项目哈哈哈就像一个命令:doSomething?withThis=aaa&andThis=bbb
  • 传统上,首先在 & 上拆分字符串,然后在 = 上拆分每个子字符串,但如果您的值中有 & 和 =,这很棘手。你能发布一些你需要解析的字符串的例子吗?
  • 很遗憾,这个应用程序的设计不是我的。事情有点“混乱”。转义内容值并执行for 匹配每对,或使用&= 拆分字符串解决问题。但是,在我的场景中,我没有这种可能性。这是我无法控制的。我正在修复遗留代码。示例:commandRun?withAtributes=valueA&withAltAtributes=valueB valueA 可以是如下值:commandStop?stopTime=321&delay=321

标签: objective-c ios regex regex-group


【解决方案1】:
// Chop off the question mark and everything before
$str = preg_replace('~^[^?]*+\?~', '', $str);
$groups = parse_str($str);

http://php.net/parse_str

【讨论】:

  • 这个问题的 PHP 标签在哪里?
  • 添加了 iOS + Objective-c 标签。我的目标是表达式本身,但为了避免问题,我进行了更改以避免冲突。我很抱歉。
  • @Geert,我测试了你的正则表达式,它提取了你所说的第一部分。但我需要使用正则表达式分组的分隔值。我需要一个具有所有要求的正则表达式来给我值(组 a = valuea / group b = valueb)。谢谢
  • @DaniloGomes:对,我的正则表达式只清理字符串以供 PHP 的 parse_str 函数使用。正是这个功能发挥了作用。
猜你喜欢
  • 2017-12-01
  • 2020-12-19
  • 2019-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多