Checking for data extraction and possible additional labels
Added checking that data extraction has happened, and that there are not additional labels present in the data not in the list supplied (Issues #5 and #3). Also switched to regex library rather than using re, to make get longest left match using regex.POSIX flag (Issue #5), extended normalisation/escaping of labels in building regex (Issues #8 and #7) and to improve performance, match is only performed once (issue #2).