【问题标题】:PHP preg_replace with groups of numbersPHP preg_replace 与数字组
【发布时间】:2015-03-15 01:40:27
【问题描述】:

好吧,这就是我所拥有的

$string=Something something 1234-123'; //can be an arbitrary amount of digits on each side of hyphen $numbers=preg_replace("/.*([0-9]*-[0-9]*).*/","$1", $string); echo $numbers;

这只是打印出“-123”,它应该打印出 1234-123。我觉得我只是在这里错过了一些非常简单的东西。

【问题讨论】:

  • 我在 regex101.com 上用表达式测试了这个:([0-9]*-[0-9]*) 和测试字符串:Something something 1234-123,结果是我得到的:1234-123
  • "/.*([0-9]+?-[0-9]+?).*/"
  • 如果你只想提取 1234-123不要使用preg_replace,使用preg_match

标签: php regex preg-replace regex-group


【解决方案1】:

我猜应该更多non-greedy

.*?([0-9]*-[0-9]*).*

【讨论】:

  • 会的,我还要再等 10 分钟。
  • 抱歉,一时糊涂了。感谢您指出@AvinashRaj
【解决方案2】:

我会改用 preg_match:

$string = 'Something something 1234-123';
preg_match('/\d+-\d+/', $string, $match);
echo $match[0],"\n";

输出:

1234-123

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    相关资源
    最近更新 更多