I have a log file with more than 10000 lines
Not to much lines, but, your target should be, probably, to discard the unnecessary lines as soon as you can. You are doing the loop "check all files for all regexes + discard if all fails".
And you could consider instead this: "next unless my first character is '\|' or what I'm expecting, and if not, take a closer look to the rest of the lines. If you are looking exactly for "horse in a meadow" and your first letter is a "p", you don't need to look further. next line.
you can also weed out your file with grep first. Treat first the most common group of lines expected (positives or negatives for your match). Use regexes then for the difficult and rare cases. Complicated regexes are expensive.