Re: SUBSTRING for a regular expression

From: Harald Fuchs <hf517(at)protecting(dot)net>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: SUBSTRING for a regular expression
Date: 2004-07-06 10:29:48
Message-ID: puacydxwbn.fsf@srv.protecting.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

In article <64617(dot)206(dot)53(dot)65(dot)243(dot)1089074434(dot)squirrel(at)$HOSTNAME>,
<btober(at)computer(dot)org> writes:

> I can't seem to get right the regular expression for parsing data like
> these four sample rows (names and addresses changed to ficticious values)
> from a text-type column:

> Yolanda Harris, 38, of 40 South Main St., Newtown City, was charged
> Sunday with breach of peace and interfering with a police officer.

> Allen K. George, 30, of 88 Beverly Court was charged Saturday with
> possession of marijuana, third-degree criminal mischief, breach of peace,
> evading responsibility, interfering with a police officer, driving with a
> suspended license, driving under the influence of drugs or alcohol,
> failure to drive right and failure to have proper insurance.

> Brain T. Grafton, 18, of 97 Bristol Ave. was charged Sunday with
> possession of marijuana, possession of alcohol by a minor and failure to
> wear a seat belt.

> Brian D. Sptizer Jr., 18, of 20 Walling Ave., Northford, was charged
> Sunday with driving under the influence of drugs or alcohol, evading
> responsibility and following too closely.

> Into separate columns for: name, age, address, charge. For example the
> first record would have

> name='Yolanda Harris'
> age=38
> address='40 South Main St., Newtown City'
> charge='was charged Sunday with breach of peace and interfering with a
> police officer.'

> To get the name, for instance, I tried

> SELECT SUBSTRING(description FROM '^([:alnum:]*), \d{2}, .*$') FROM
> police_log;

> or the age value

> SELECT SUBSTRING(description FROM '^[:alnum:]*, (\d{2}), .*$') FROM
> police_log;

> But return values are all NULL. Can anyone give me some RE help, please?

Could you use Perl? A Perl regexp for that would be

/^(.+), (\d+), of (.+?),? (was charged.+)$/

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Najib Abi Fadel 2004-07-06 10:45:46 Re: Bug in function to_char() !!
Previous Message Najib Abi Fadel 2004-07-06 10:23:27 Re: creating a complex aggregate function