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',
)