6.9. Integer Numbers with Separators
Problem
You want to find various kinds of integer numbers in a
larger body of text, or check whether a string variable holds an integer
number. Underscores are allowed as separators between groups of numbers,
to make the integers easier to read. Numbers may not begin or end with
an underscore. You want to allow decimal, octal, hexadecimal, and binary
numbers. Hexadecimal and binary numbers must be prefixed with 0x and 0b.
0b0111_1111_1111_1111_1111_1111_1111_1111,
0177_7777_7777, 2_147_483_647, and
0x7fff_ffff
are examples of valid numbers.
Solution
Find any decimal or octal integer with optional underscores in a larger body of text:
\b[0-9]+(_+[0-9]+)*\b
| Regex options: None |
| Regex flavors: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby |
Find any hexadecimal integer with optional underscores in a larger body of text:
\b0x[0-9A-F]+(_+[0-9A-F]+)*\b
| Regex options: Case insensitive |
| Regex flavors: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby |
Find any binary integer with optional underscores in a larger body of text:
\b0b[01]+(_+[01]+)*\b
| Regex options: Case insensitive |
| Regex flavors: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby |
Find any decimal, octal, hexadecimal, or binary integer with optional underscores in a larger body of text:
\b([0-9]+(_+[0-9]+)*|0x[0-9A-F]+(_+[0-9A-F]+)*|0b[01]+(_+[01]+)*)\b
| Regex options: Case insensitive |
| Regex flavors: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby |
Check whether a text string holds just a decimal, octal, hexadecimal, ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access