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

Php 如何捕获括号外的所有数字?,php,regex,numbers,preg-match,preg-split,Php,Regex,Numbers,Preg Match,Preg Split,如果我有这样一个字符串: $string = "number: 20 (10 30 10 zzz) 40 60"; 如何匹配括号外的所有数字 我只想 20,40,60 以下是一种preg\u split()方法: 输入: $string = "number: 20 (10 30 10 zzz) 40 60"; 一班轮(): 输出: array ( 0 => '20', 1 => '40', 2 => '60', ) 此模式将在以下情况下爆炸: 每个空间 每

如果我有这样一个字符串:

$string = "number: 20 (10 30 10 zzz) 40 60";
如何匹配括号外的所有数字

我只想

20,40,60
以下是一种
preg\u split()
方法:

输入:

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

输出:

array (
  0 => '20',
  1 => '40',
  2 => '60',
)
此模式将在以下情况下爆炸:

  • 每个空间
  • 每个
    编号:
  • 每个插入式表达式

编辑:

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


chris85对
preg\u match()
的注释模式是正确的。我通过反转选项对其进行了优化:
\d+\([^)]+\(*跳过)(*失败)

我将给您一个提示。将
()
中的内容替换为空白,然后匹配剩余的数字。快速且脏的您可能会爆炸(“,$string”);只要抓住位置0、5和6,如果括号总是匹配,
\([^)]+\(*skip)(*FAIL)|\d+
,就可以跳过它们。你可以用多种方法解决这个问题,但是请记住,正则表达式不能像前面描述的那样匹配平衡括号。因此,除非你永远不会有一组以上的括号,否则你应该重新考虑你的方法。如果您熟悉递归,那么您就会知道它在PCRE中是可能的@奥利安04
array (
  0 => '20',
  1 => '40',
  2 => '60',
)