On Tue, May 19, 2009 at 09:18, Dan Fish <[email protected]> wrote:
> Simple question for the regEXperts out there...
>
> I have a string that is always in the format: aaaaa.nn+x.y
>
> a is always 5 chars
> n can be 1 or 2 digits
> x can be +/- (with sign), 1-4 digits
> y is always positive (no sign), 1-4 digits
snip
What do you mean by chars? Is any character valid or are only
printable characters valid, or only printable ASCII characters, or
a-z, A-Z, and 0-9?
a is (.{5}) or ([[:print:]]{5}) or ([\x{20}-\x{7e}]{5}) or ([a-zA-Z0-9]{5})
. is [.]
n is ([0-9]{1,2})
x is ([+-][0-9]{1,4})
. is [.]
y is ([0-9]{1,4})
>
>
> Some examples:
> A123C.11+002.001
> FC32G.2-1.0
> 12B15.01+2145.15
>
> I need all 4 pieces and the length of x & y. The following works:
>
> my $id= "A123C.11+002.001";
>
> my @tmp = split(/[\.+-]/,$id);
> my $part = $tmp[0];
> my $unit = $tmp[1];
> my $x = $tmp[2];
> my $y = $tmp[3];
> my $xlen = length $tmp[2];
> my $ylen = length $tmp[3];
snip
my ($part, $unit, $x, $y) = / (.{5}) [.] ([0-9]{1,2}) ([+-][0-9]{1,4})
[.] ([0-9]{1,4}) /x
my ($xlen, $ylen) = map length, $x, $y;
--
Chas. Owens
wonkden.net
The most important skill a programmer can have is the ability to read.
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/