split a string into tokens (pair of labels and words) by giving a regular expression
containing labeled subexpressions.
This function should not be called with regular expressions
without any labeled subexpressions. This does not make sense, because the result list
will always be empty.
Result is the list of matching subexpressions
This can be used for simple tokenizers.
At least one char is consumed by parsing a token.
The pairs in the result list contain the matching substrings.
All none matching chars are discarded. If the given regex contains syntax errors,
Nothing is returned