split: регулярное выражение для игнорирования разделителей внутри сбалансированных скобок - PullRequest
0 голосов
/ 23 августа 2010

У меня есть часть инструкции ORDER BY, и я должен разделить ее на логические части

my $sql_part = <<EOH
    IF(some_table.some_field <> 3, 1, 0), 
    some_table.other_field, 
    CASE other_table.third_field WHEN IS NULL THEN 2 ELSE 1 END,
    other_table.third_field
EOH

, и, вы знаете, исходная строка не содержит символов новой строки и IF может быть вложенной.1004 *

Проблема в том, что я не хочу разбивать вещи внутри вложенных IF, вызовов функций.

Так просто split /\s*,\s*/, $sql_part не будет работать.

Есть лирегулярное выражение, которое может сделать это, или я должен сделать это просто по-другому?

1 Ответ

3 голосов
/ 23 августа 2010

Существует регулярное выражение, но вы, вероятно, хотите просто использовать анализатор SQL: SQL :: Statement

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...