关于php:匹配数字但排除方括号内的数字

Match digits but exclude digits within square brackets

我正在使用PHP。我有以下类型的字符串:

1
2
3
4
3-5
8[4]-10
14-21[5]
1[5]-12[2]

我正试图找出一个regex,只捕获方括号前的数字,并排除方括号内的数字(和方括号),这样得到的字符串将只是:

1
2
3
4
3-5
8-10
14-21
1-12

经过许多诱惑之后,我不明白如何编写一个不包含匹配项的正则表达式。


$bracketsRemoved = preg_replace('/\[\d+\]/', '', $numbersWithBrackets);


你可以用preg_replace()去掉那些括号。

1
2
3
4
5
6
7
8
9
10
// The string
$bracketedString = '19-4[5]';

// Remove brackets
$bracketless = preg_replace('/\[\d+\]/', '', $bracketedString);

/.../ - The regexp
\[ - The escaped opening bracket
\d+ - Numeric values
\] - The escaped closing bracket

资源

  • preg_replace()-手动