[vox-tech] ARE (Tcl / Postgresql) REGEX question [solved]

Dylan Beaudette debeaudette at ucdavis.edu
Tue Dec 2 11:09:31 PST 2008


On Tuesday 02 December 2008, Wes Hardaker wrote:
> >>>>> On Mon, 1 Dec 2008 18:45:44 -0800, Dylan Beaudette
> >>>>> <debeaudette at ucdavis.edu> said:
>
> DB> ([0-9]?[\\.]?[0-9][Y|y|R|r]+[
> ]+?[0-9]/[0-9]).*?([0-9]?[\\.]?[0-9][Y|y|R|r]+[ ]+?[0-9]/[0-9]) Add '|'
> here:   ^
>
> to become ...[0-9]|)
>
> Which will let the second pattern match against nothing so you'll get an
> empty string as the result.
>
>
> However, what if you need to match against 100 colors?  It would be
> better to loop over the string multiple times until no further matches
> are found.

I was able to solve this problem by following the great advice that was 
suggested on vox-tech.

Turns out that regexp_matches() with the 'g' (global) option will return a row 
for each match. I was then able to use a custom aggregate -- array_accum() to 
convert the multiple rows into a single array. Details on the array_accum() 
aggregate can be found here:

http://www.postgresql.org/docs/8.3/static/xaggr.html

Cheers,

Dylan



-- 
Dylan Beaudette
Soil Resource Laboratory
http://casoilresource.lawr.ucdavis.edu/
University of California at Davis
530.754.7341


More information about the vox-tech mailing list