Okay, I posted some. What I don't understand is if I just use /Remediation Report\n\n(.+?)\n/, I get the line I'm looking for (Adobe Flash Player Multiple Vulnerabilities - April 2008 - IE), but if I use /Remediation Report\n\n(.+?)\n|^(.+?)\n/, I get the top of the metadata (thread-index: AcjoCau17Ri90HMJR8qoukn2A1g7ng==). | [reply] |
The regex engine starts at the start of the string, and tries to match the first alternative, here Remediation Report\n\n(.+?)\n. It doesn't match, so it tries the second alternative, ^(.+?)\n. That one matches, so it captures the first line in $1.
Without the alternation, the regex engine moves its starting position until it finds the substring Remediation Report.
(Actually it's much smarter than that; it searches for the constant substring with the same techniques that index uses, but from a users point of view that only matters when it comes to speed, not in terms of functionality).
| [reply] [d/l] [select] |
I'm not sure why the match is failing with the alternation when it matches correctly without it. I understand that if the first pattern does not match, it will go on to the second half . That's the behavior I want with regards to the rest of the records. Why is the match failing? That's what I do not understand, since it works correctly as long as the alternation is removed.
| [reply] |