That’s perfectly valid HTML, but you wouldn’t want to pull that link out, and POSIX regex can’t really avoid it. At least not with just a single regex. Imagine a link nested within like 3 template tags.
Yes, I said in my original comment that it can’t universally parse and validate every HTML document. If they’re older pages that don’t do lots of crazy formatting then it’s not too hard to use regex as a first pass then take a second pass through the results to weed out the odd stuff.
I would argue that that is not parsing. That’s just pattern matching. For something to be parsing a document, it would have to have some understanding of the structure of the document. Since regex is not powerful enough to correctly “understand” the document, it’s not parsing.
Technically, regex can’t pull out every link in an HTML document without potentially pulling fake links.
Take this example (using curly braces instead of angle brackets, because html is valid markdown):
{template id="link-template"} {a href="javascript:void(0);"}link{/a} {/template}
That’s perfectly valid HTML, but you wouldn’t want to pull that link out, and POSIX regex can’t really avoid it. At least not with just a single regex. Imagine a link nested within like 3 template tags.
Yes, I said in my original comment that it can’t universally parse and validate every HTML document. If they’re older pages that don’t do lots of crazy formatting then it’s not too hard to use regex as a first pass then take a second pass through the results to weed out the odd stuff.
I would argue that that is not parsing. That’s just pattern matching. For something to be parsing a document, it would have to have some understanding of the structure of the document. Since regex is not powerful enough to correctly “understand” the document, it’s not parsing.