split:正则表达式忽略平衡括号内的分隔符

时间:2010-08-23 16:50:13

标签: sql regex perl

我有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可以嵌套。

问题是我不想在嵌套的IF函数调用中拆分东西。

如此简单的split /\s*,\s*/, $sql_part无效。

是否有可以执行此操作的正则表达式,还是应该以不同的方式执行此操作?

1 个答案:

答案 0 :(得分:3)

有一个正则表达式,但您可能只想使用SQL解析器:SQL::Statement