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

2008-12-02 Thread Dylan Beaudette
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

2008-12-02 Thread Dylan Beaudette
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

2008-12-02 Thread Wes Hardaker
> 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