Few things:

1. Super nit picky, but can you just define these as "normal" constants rather than namespacing them in the REGEX object? `REGEX_LINE` and `REGEX_CHARACTER` would be perfect.

2. Please comment these regexps and explain what exactly they are matching. Regular expressions can be very hard to read, which leads me to (3).

3. What is the line regex matching and grouping? A bunch of whitespace and non-whitespace characters, followed by zero or more of anything, followed by an optional newline?