Use the following expressions to parse out the LC Class, LC Class Number, First Cutter, Second Cutter and internal year from the call number:

SUBSTRING (call_number, '^([a-zA-z]{1,3})') AS lc_class

SUBSTRING (call_number, '\d{1,}\.{0,}\d{0,}') AS lc_class_number

SUBSTRING (call_number, '\.{0,}[A-Z][0-9]{1,}') AS first_cutter

SUBSTRING (call_number, '\s{1}[A-Z]{1}\d{1,}x{0,}a{0,}b{0,}') AS second_cutter

SUBSTRING (call_number, '\s\d{4}\s\.') AS internal_year


Notes:

To eliminate the leading decimal point, use these expression:

first cutter: trim (LEADING '.' FROM SUBSTRING (call_number, '\.{0,}[A-Z][0-9]{1,}'))
second cutter: trim (LEADING '.' FROM SUBSTRING (call_number, '\s{1}[A-Z]{1}\d{1,}x{0,}a{0,}b{0,}'))