[tpm] Regex question

Liam R E Quin liam at holoweb.net
Fri Oct 19 21:02:57 PDT 2012


[resending from the right account - I hate the Evolution mailer sometimes. I should switch to Inteligent Design]

On Fri, 2012-10-19 at 21:43 -0400, Chris Jones wrote:

> Kitchen Area 1C Spc zn         2750.     1400.     0.249     1.000
> Kitchen Area 1C Pl zn             0.        0.     0.000     0.000

> my @zoneLine = split /[\w\s{0,25)$]/+\w{4}/, $inLine;

This is muddled thinking. Take off your shoes, drink a cup of tea, and
try again :-)

Someone else suggested using unpack but I'd probably stick with regular
expressions if you can take the time to get used to them, because
they're really really useful an powerful once you have tamed them.

[...] is a character class. A character class with one space in it
matches the same as a character class with 25 spaces in it.
[abc] matches an "a", a "b" or a "c" in the input.
[a{0,25}] matches an "a", a "{", a "0", a ",", a "2", a "5" or a "}".

[\w\s]{0,25} matches between 0 and 25 characters, each of which is a
word or space character. It's also not what you want, but it's closer.

Note also that split takes a regular expression that *separates* fields,
and does not return the part of the input that matched the pattern.

my @zoneLine = ($inLIne =~ m{
       ^(.{25})         # the zone name
        \s*([\d.]+)     # supply flow
        \s+([\d.]+)     # exhaust flow
        \s+([\d.]+)     # fan kw
        \s*([\d.]+)     # minimum flow
        \s*
       $});

if (@zoneLine = 5) { # matched OK
    $zoneLine[0] =~ s/\s+$//; # remove trailing whitespace
    etc_etc_go_crazy)(;
} else {
    print "unmatched: $_\n";
}

Liam

-- 
Liam Quin - XML Activity Lead, W3C, http://www.w3.org/People/Quin/
Pictures from old books: http://fromoldbooks.org/
Ankh: irc.sorcery.net irc.gnome.org freenode/#xml

-- 
Liam Quin - XML Activity Lead, W3C, http://www.w3.org/People/Quin/
Pictures from old books: http://fromoldbooks.org/
Ankh: irc.sorcery.net irc.gnome.org freenode/#xml



More information about the toronto-pm mailing list