【问题标题】:regex not matching pattern correctly正则表达式未正确匹配模式
【发布时间】:2013-11-10 03:02:12
【问题描述】:

数据是这样的

cityID=123456789&sharing=blahblahblah

目前正在做

$cityID = preg_grep("/cityID=.\d\&$/", $sometext);

print_r($cityID);

目前正在打印 大批( )

我想打印 123456789

【问题讨论】:

  • 搜索“解析查询字符串”。
  • @user2864740,实际上是处理一个大的转换 pcap 到文本文件,寻找特定的模式
  • 你想要. 紧跟在= 之后吗?
  • 我认为 .将指示开始,我将其删除,然后将其放在 cityID 的开头,仍然没有获取城市 ID。干杯@thesquid24
  • @user2436729 请在下面查看我的新答案。

标签: php regex grep


【解决方案1】:

问题在于$ 标记了行尾,因为此模式不一定位于行尾。 \d 也不允许在 & 符号前超过一位,所以我添加了 +。 (另外,请注意 . 匹配任何字符;不清楚这就是你想要的,这就是我在上面问的原因。)

这应该适合你:

preg_match("/cityID=\d+&/", $input_line, $output_array);

要对这种模式进行更多试验,请访问http://www.phpliveregex.com/p/1WH

【讨论】:

  • 干杯@thesquid24 我知道这是一个尴尬的要求,但我感谢您的指导。很高兴看到 stackoverflow 有耐心!
【解决方案2】:

你可以使用preg_match_all()

$str = "cityID=123456789&sharing=blahblahblahcityID=123456789&sharing=blahblahblahcityID=123456789&sharing=blahblahblah";

// or
// $str = "cityID=123456789&sharing=blahblahblah
// cityID=123456789&sharing=blahblahblah
// cityID=123456789&sharing=blahblahblah";

$result = preg_match_all("/cityID=(\d+)/", $str, $matches);

print_r($matches[1]);

输出:

Array ( [0] => 123456789 [1] => 123456789 [2] => 123456789 )

【讨论】:

    猜你喜欢
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 2016-04-20
    相关资源
    最近更新 更多