如何捕获括号外的所有数字?

时间:2017-05-25 18:09:04

标签: php regex numbers preg-match preg-split

如果我有这样的字符串:

$string = "number: 20 (10 30 10 zzz) 40 60";

如何匹配括号外的所有数字?

我想只获得

20,40,60

1 个答案:

答案 0 :(得分:1)

以下是preg_split()方法:

输入:

$string = "number: 20 (10 30 10 zzz) 40 60";

单行(Pattern Demo):

var_export(preg_split('/ |number: |\([^)]*\)/',$string,null,PREG_SPLIT_NO_EMPTY));

输出:

array (
  0 => '20',
  1 => '40',
  2 => '60',
)

此模式将爆炸:

  • 每个空间
  • number:
  • 每个括号表达

编辑:

此模式也适用于preg_split()/[ a-z:]+|\([^)]*\)/i速度稍快。

...

chris85对preg_match()的评论模式是正确的。我通过颠倒替代方案对其进行了优化:\d+|\([^)]+\)(*SKIP)(*FAIL)