in reply to Skip quoted string in regex

Hi Roho

Usually it's discouraged to solve this kind of parsing with regex, but expecting that split could do this is even more than ambitious.

You would need look-arounds b/c both LHS and RHS could contain "operators".

Did you consider using something like SQL::Parser ?

Anyway the right approach¹ (IMHO) is to successively build a parse regex which starts from the left, by combining smaller parts like $clause = $lhs . $op . $rhs;

Like this you can also follow the official SQL grammar.

Saying this, there are already some BNF parsers available for Perl.

Good luck reinventing the wheel. ;-)

Cheers Rolf
(addicted to the Perl Programming Language and ☆☆☆☆ :)
Je suis Charlie!

update

¹) not elaborating on the necessity to be able to recursively descent into nested structures like parens-groups and even sub-queries

Replies are listed 'Best First'.
Re^2: Skip quoted string in regex
by Anonymous Monk on Nov 09, 2015 at 21:39 UTC
    Thanks Rolf. I realized this as soon as I inherited this code. Due to constraints (time, $$$) I am trying to avoid a massive refactor (or rewrite), but alas, I may have to make the case to the powers that be that this will be more cost effective and beneficial in the long run. I will check out SQL::Parser. Thanks again.
Re^2: Skip quoted string in regex
by roho (Bishop) on Nov 09, 2015 at 21:40 UTC
    Sorry, I was not logged in. Thanks again.

    "Its not how hard you work, its how much you get done."