use Regexp::Common qw /number/; while (<>) { /^$RE{num}{int}$/ and print "Integer\n"; /^$RE{num}{real}$/ and print "Real\n"; /^$RE{num}{real}{-base => 16}$/ and print "Hexadecimal real\n"; }
Do not use this module directly, but load it via Regexp::Common.
If "-base => B" is specified, the integer is in base B, with "2 <= B <= 36". For bases larger than 10, upper case letters are used. The default base is 10.
If "-sep => P" is specified, the pattern P is required as a grouping marker within the number. If this option is not given, no grouping marker is used.
If "-group => N" is specified, digits between grouping markers must be grouped in sequences of exactly N digits. The default value of N is 3. If "-group => N,M" is specified, digits between grouping markers must be grouped in sequences of at least N digits, and at most M digits. This option is ignored unless the "-sep" option is used.
If "-places => N" is specified, the integer recognized must be exactly N digits wide. If "-places => N,M" is specified, the integer must be at least N wide, and at most M characters. There is no default, which means that integers are unlimited in size. This option is ignored if the "-sep" option is used.
If "-sign => P" is used, it's a pattern the leading sign has to match. This defaults to "[-+]?", which means the number is optionally preceded by a minus or a plus. If you want to match unsigned integers, use $RE{num}{int}{-sign => ''}.
For example:
$RE{num}{int} # match 1234567 $RE{num}{int}{-sep=>','} # match 1,234,567 $RE{num}{int}{-sep=>',?'} # match 1234567 or 1,234,567 $RE{num}{int}{-sep=>'.'}{-group=>4} # match 1.2345.6789
Under "-keep" (see Regexp::Common):
If "-base=N" is specified, the number is assumed to be in that base (with A..Z representing the digits for 11..36). By default, the base is 10.
If "-radix=P" is specified, the pattern P is used as the radix point for the number (i.e. the ``decimal point'' in base 10). The default is "qr/[.]/".
If "-places=N" is specified, the number is assumed to have exactly N places after the radix point. If "-places=M,N" is specified, the number is assumed to have between M and N places after the radix point. By default, the number of places is unrestricted.
If "-sep=P" specified, the pattern P is required as a grouping marker within the pre-radix section of the number. By default, no separator is allowed.
If "-group=N" is specified, digits between grouping separators must be grouped in sequences of exactly N characters. The default value of N is 3.
If "-expon=P" is specified, the pattern P is used as the exponential marker. The default value of P is "qr/[Ee]/".
If "-sign=P" is specified, the pattern P is used to match the leading sign (and the sign of the exponent). This defaults to "[-+]?", means means that an optional plus or minus sign can be used.
For example:
$RE{num}{real} # matches 123.456 or -0.1234567 $RE{num}{real}{-places=>2} # matches 123.45 or -0.12 $RE{num}{real}{-places=>'0,3'} # matches 123.456 or 0 or 9.8 $RE{num}{real}{-sep=>'[,.]?'} # matches 123,456 or 123.456 $RE{num}{real}{-base=>3'} # matches 121.102
Under "-keep":
If "-base=N" is specified, the number is assumed to be in that base (with A..Z representing the digits for 11..36). By default, the base is 10.
If "-radix=P" is specified, the pattern P is used as the radix point for the number (i.e. the ``decimal point'' in base 10). The default is "qr/[.]/".
If "-places=N" is specified, the number is assumed to have exactly N places after the radix point. If "-places=M,N" is specified, the number is assumed to have between M and N places after the radix point. By default, the number of places is unrestricted.
If "-sep=P" specified, the pattern P is required as a grouping marker within the pre-radix section of the number. By default, no separator is allowed.
If "-group=N" is specified, digits between grouping separators must be grouped in sequences of exactly N characters. The default value of N is 3.
For example:
$RE{num}{decimal} # matches 123.456 or -0.1234567 $RE{num}{decimal}{-places=>2} # matches 123.45 or -0.12 $RE{num}{decimal}{-places=>'0,3'} # matches 123.456 or 0 or 9.8 $RE{num}{decimal}{-sep=>'[,.]?'} # matches 123,456 or 123.456 $RE{num}{decimal}{-base=>3'} # matches 121.102
Under "-keep":
The largest number which will be matched is 4999, or "MMMMDCCCCLXXXXVIIII", or "MMMMCMXCIX".
Under "-keep", the number will be captured in $1.
For a start, there are many common regexes missing. Send them in to regexp-common@abigail.be.
This module is free software, and maybe used under any of the following licenses:
1) The Perl Artistic License. See the file COPYRIGHT.AL. 2) The Perl Artistic License 2.0. See the file COPYRIGHT.AL2. 3) The BSD License. See the file COPYRIGHT.BSD. 4) The MIT License. See the file COPYRIGHT.MIT.