Re: Rgular Expression - 1st alternative

From: Date: Thu, 09 Oct 2003 18:42:17 +0000
Subject: Re: Rgular Expression - 1st alternative
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-165657@lists.php.net to get a copy of this message
On Thu, 9 Oct 2003 19:54:09 +0200, Emo <emo@emo-cz.net> wrote:
Hi all. I've got one problem with %subj%. I need to get 1st appearance of any alternative pattern, but my regexp get last.
Remember .* is greedy by default you need to use .*? also instead of using [[:space:]] I might suggest using \s, it will make it shorter
in $out[2] (input) is "columns FROM tables WHERE conditions ORDER BY sth DESC LIMIT 1 OFFEST 0" preg_match("/[[:space:]]*(.*)[[:space:]]+from[[:space:]]+(.*) [[:space:]]+whe re[[:space:]]+(.*)[[:space:]]+(order by|group by|having|limit)(.*)/is", $out[2], $out);
/^\s*(.*?)\s+from\s+(.*?)\s+where\s+(.*?)\s+(order by|group by|having|limit)(.*)/is
This will produce: Array ( [0] => columns FROM tables WHERE conditions ORDER BY sth DESC LIMIT 1 OFFEST 0 [1] => columns [2] => tables [3] => conditions ORDER BY sth DESC // but here I need only "conditions" [4] => LIMIT // and here shloud be ORDER BY sth DESC LIMIT [5] => 1 OFFEST 0 )
I'm not entirely clear how you want to capture the order by|group by| etc.. Curt --

« previous php.general (#165657) next »