You can skip the fist two functions (outside the case structure) if Event Array is empty. Not sure how often that happens, it would depend on the application. If you poll those events more often then the events come in, it might help a bit. Depending on the benchmark mechanism, it might not show.
I'm not sure if your concern about reg.ex. is valid. That scan from string might be slow, and you still need two match patterns. The reg.ex. performance might surprise you, although the used query is significant.
As the scan from string mostly separates tabbed items, a spreadsheet string to array might be faster. That function goes like a rocket.