I think we need to break this down into smaller sections for manageability.
First store the individual column regexps in separate constants. E.g. LocationRegexp, TubeBarcodeRegexp.  We can then move these out into separate libraries to be reused.

I would spilt the line into columns using the split function and parse each column using an individually.