2007-06-02 | paulb | file changeset files shortlog | SQL literal detection routines. |
paulb@0 | 1 | #!/usr/bin/env python |
paulb@0 | 2 | |
paulb@0 | 3 | import re |
paulb@0 | 4 | query = re.compile("(?P<non_literal>[^']+)|(?P<literal>'(?:[^']|(?:''))*')") |
paulb@0 | 5 | |
paulb@0 | 6 | def parseString(s): |
paulb@0 | 7 | regions = [] |
paulb@0 | 8 | first = 1 |
paulb@0 | 9 | for match in query.finditer(s): |
paulb@0 | 10 | non_literal, literal = match.groups() |
paulb@0 | 11 | if first and literal: |
paulb@0 | 12 | regions.append("") |
paulb@0 | 13 | if non_literal: |
paulb@0 | 14 | regions.append(non_literal) |
paulb@0 | 15 | elif literal: |
paulb@0 | 16 | regions.append(literal) |
paulb@0 | 17 | first = 0 |
paulb@0 | 18 | |
paulb@0 | 19 | return regions |
paulb@0 | 20 | |
paulb@0 | 21 | # vim: tabstop=4 expandtab shiftwidth=4 |