# Notes:
# * The pattern currently matches any character for the name of the constraint
- # except tab and newline characters.
+ # non greedily.
# * Because check constraints in the table data can contain space, newline and tab characters,
# the pattern matches any character untill either the beginning of the next CONSTRAINT
# statement using a non-capturing non-consuming group (allowing the next one to match),
# or the end of the table definition e.g. newline and closing ')'.
- CHECK_PATTERN = r"(?:CONSTRAINT ([^\t\n]+) )?CHECK \((.+?)\)(?:, *\n\t?(?=CONSTRAINT|CHECK)|\n\))"
+ CHECK_PATTERN = r"(?:CONSTRAINT (.+?) )?CHECK \((.+?)\)(?:, *\n\t?(?=CONSTRAINT|CHECK)|\n\))"
cks = []
for match in re.finditer(CHECK_PATTERN, table_data or "", re.I|re.S):
name = match.group(1)