You shouldn't be using delimiters here.
Make a regex that describes the entire record, and use capturing groups to get individual parts of the record. Then use the findWithinHorizon() method to read all the records.
I have not compiled this, so it might be completely off. The point is that it describes the records, and then finds those records within the file, regardless of delimiters. The
pattern consists of three capturing groups: the text before the pipe, the text after the pipe and the final number. We see that text before and after the pipe may consist of any number of x characters, where x is any character except for whitespace or pipes, but including tabs. Each of the three groups may be separated by any number of whitespace.