The two following quotes are from here.
In the "Verbs that act after backtracking " section, we have:-
"....where (*SKIP) was encountered. (*SKIP) signifies that whatever text was matched leading up to it cannot be part of a successful match."
In the "Lookahead assertions" section we have :-
"If you want to force a matching failure at some point in a pattern, the most convenient way to do it is with (?!) because an empty string always matches, so an assertion that requires there not to be an empty string must always fail. The backtracking control verb (*FAIL) or (*F) is a synonym for (?!). "
The successfully matched text before the backtracking control verb, "(*SKIP)", is forced into a matching failure using "(*FAIL)", or "(*F)", or "(?!)".
As the RE pattern is applied to the rest of the test string from left to right and top to bottom, all the text that does not match the pre-"*SKIP", or pre-"|" part of the RE pattern is match with the Post-"|", or, the "post-or" part of the RE pattern.
Using StringRegExpReplace() function, all text that is matched is replaced with "" (nothing). That is, the matched text is deleted, and the forced unmatched text is not deleted.
The only reason I answered this post was to further investigate mikell's "brilliantly created" RE pattern from here. Thanks mikell.
@kylomas
The problem with the For-Next loop is after the first search, or loop, the lines that do not have the first search string in them are deleted.
For a line to survive all the searches in the loop, that line would need to have all search strings in that particular line.