Вы хотите сопоставить целое число и либо вернуть его без ведущих нулей, либо удалить ведущие нули.
Регулярное выражение
1 | \b0*([1-9][0-9]*|0)\b |
Замена
1 | $1 |
1 | \1 |
Получение чисел в Perl
1 2 3 | while ($subject =~ m/\b0*([1-9][0-9]*|0)\b/g) { push(@list, $1); } |
Обрезание ведущих нулей в PHP
1 | $result = preg_replace('/\b0*([1-9][0-9]*|0)\b/', '$1', $subject); |
Обсуждение
Мы используем группу захвата, чтобы отделить число от его ведущих нулей. До группы '0*' соответствует ведущим нулям, если таковые имеются. Внутри группы '[1-9][0-9]*' соответствует числу, состоящему из одной или нескольких цифр, первая из которых ненулевая. Число может начинаться с нуля только в том случае, если оно само является нулем. Границы слов гарантируют, что мы не будем сопоставлять неполные числа.