Regex-matching the contents of an HTML tag

16/09/2008

I have a folder in my Mail.app client dedicated to code snippets that I've emailed to myself. It's usually stuff that I don't use a whole lot, or stuff that I did at the end of a day that I know I won't remember tomorrow. There's a whole load of mod_rewrite and shell stuff in there! A blog seems like a pretty sensible place to keep this sort of thing, so every time I get something I might need, I'll add it here as a pastebin type thing. I could always use pastebin, but that's just one more site to keep track of!

So, the following matches the value of the href attribute in an a tag:

<a(?!href).href=["']{1}([^"'])["']{1}[^>]>
Obviously if you wanted to match the src attribute of an img tag, you'd change it up in the following way:
<img(?!src).src=["']{1}([^"'])["']{1}[^>]>
The former matches the href value in the following tags:
<a href="awesome">
<a class="brilliant" href="awesome">
<a href="awesome" id="excellent">
<a class="brilliant" href="awesome" id="excellent">
<a href='awesome'>
<a href=''>
Being awesome on each row, except for the last row, which is an empty string.

This revelation is inspired by the following post on statiksoft. I really needed this the other day!