正则表达式多重匹配PHP

时间:2015-05-06 09:56:06

标签: php regex

我正在尝试从字符串中获取所有数字,在数字前加-_,并选择- _ space或结尾字符串在数字的末尾。

所以,我的正则表达式看起来像这样:

[-_][\d]+[-_ $]?

我的问题是,我不会紧接着匹配数字。从“foo-5234_2123_54-13-20”字符串中,我只获得52345420

我尝试的是以下正则表达式:(?:[-_])[\d]+(?:[-_ $])?[-_]([\d]+)[-_ $]?显然无法正常工作。我现在正在寻找几个小时,我知道它不会那么难,所以我希望有人可以帮助我。

如果这有任何区别,我正在使用PHP preg_match_all

1 个答案:

答案 0 :(得分:1)

您只需使用look-arounds

(?<=[-_])\d+(?=[-_ ]|$)

请参阅demo

幸运的是,PHP至少支持固定宽度的后视,我们可以在这里使用它。