Re: [vox-tech] ARE (Tcl / Postgresql) REGEX question [solved]
On Tuesday 02 December 2008, Wes Hardaker wrote: > > On Mon, 1 Dec 2008 18:45:44 -0800, Dylan Beaudette > > <[EMAIL PROTECTED]> 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 ___ vox-tech mailing list vox-tech@lists.lugod.org http://lists.lugod.org/mailman/listinfo/vox-tech
Re: [vox-tech] ARE (Tcl / Postgresql) REGEX question
On Tue, Dec 2, 2008 at 5:49 AM, Wes Hardaker <[EMAIL PROTECTED]> wrote: >> On Mon, 1 Dec 2008 18:45:44 -0800, Dylan Beaudette <[EMAIL PROTECTED]> >> 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. > Thanks Wes. I'll give that a try. > > 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. That sounds like a more robust way to do it. Do you know of any mechanism in postgresql, short of writing procedural code, that could do this? I'll try try using the basic color matching pattern, and adding the 'g' flag to make the search global and see what happens. Cheers, Dylan > -- > "In the bathtub of history the truth is harder to hold than the soap, > and much more difficult to find." -- Terry Pratchett > ___ > vox-tech mailing list > vox-tech@lists.lugod.org > http://lists.lugod.org/mailman/listinfo/vox-tech > ___ vox-tech mailing list vox-tech@lists.lugod.org http://lists.lugod.org/mailman/listinfo/vox-tech
Re: [vox-tech] ARE (Tcl / Postgresql) REGEX question
> On Mon, 1 Dec 2008 18:45:44 -0800, Dylan Beaudette <[EMAIL PROTECTED]> > 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. -- "In the bathtub of history the truth is harder to hold than the soap, and much more difficult to find." -- Terry Pratchett ___ vox-tech mailing list vox-tech@lists.lugod.org http://lists.lugod.org/mailman/listinfo/vox-tech