## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

No credit card required

## Problem

You want to match an integer number, and either return the number without any leading zeros or delete the leading zeros.

## Solution

### Regular expression

`\b0*([1-9][0-9]*|0)\b`
 Regex options: None Regex flavors: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby

### Replacement

`\$1`
 Replacement text flavors: .NET, Java, JavaScript, PHP, Perl
`\1`
 Replacement text flavors: PHP, Python, Ruby

### Getting the numbers in Perl

```while (\$subject =~ m/\b0*([1-9][0-9]*|0)\b/g) {
push(@list, \$1);
}```

### Stripping leading zeros in PHP

`\$result = preg_replace('/\b0*([1-9][0-9]*|0)\b/', '\$1', \$subject);`

## Discussion

We use a capturing group to separate a number from its leading zeros. Before the group, `0*` matches the leading zeros, if any. Within the group, `[1-9][0-9]*` matches a number that consists of one or more digits, with the first digit being nonzero. The number can begin with a zero only if the number is zero itself. The word boundaries make sure we don’t match partial numbers, as explained in Recipe 6.1.

To get a list of all numbers in the subject text without leading zeros, iterate over the regex matches as explained in Recipe 3.11. Inside the loop, retrieve the text matched by the first (and only) capturing group, as explained in Recipe 3.9. The solution for this shows how you could do this in Perl.

Stripping the leading zeros is easy with a search-and-replace. Our regex has a capturing group that separates the number from its leading zeros. If we replace the overall regex match (the number including ...

## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

No credit card required