2010-08-23 6 views
0

균형 잡힌 괄호 안에 구분 기호를 무시하고 내가 논리적 인 부분 분할 : 정규식 내가 문의 일부에 의해 ORDER있어

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은 작동하지 않습니다.

이를 수행 할 수있는 정규식이 있습니까, 아니면 다르게해야합니까?

답변

3

이 정규식이지만, 당신은 아마 그냥 SQL 파서 사용하려면 : 주어진 대답으로 전문 파서, 아무 소용 [`데이터 : 경우 : 검색 엔진의 이익을 위해 SQL::Statement

+0

을 Record'] (http://p3rl.org/Data::Record)가 그 일을 할 것이다. – daxim