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, ...
Get Regular Expressions Cookbook, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.