Possible .Net regex bug?

For reasons too dull to explain, I’m trying to use regular expressions to postprocess an HTML-stream. I want to find all anchor (<a/>) tags that link within our site, in this case using the domain name.

My regular expression looks right to me, but .Net is convinced I don’t have enough close-parentheses. I’ve added line breaks for clarity:

   (?<=<a[^>]* href=['"]?)
   (?<before>https?://[a-z0-9.-]*uswitch\.[a-z]+/[-\w_,.%/~]+)
   (?<querystring>\??[-\w&=~]*)
   (?<fragment>#?[-\w&=~]*)
   (?=['"]?[^>]*>)

I’ve tested both the above code with the line breaks removed and the original code (which is compiled with RegexOptions.IgnorePatternWhitespace and has embedded comments for ease of maintenance. Each time, I get a System.ArgumentException: parsing "..." - Not enough )'s.

Despite that I’m quite certain they’re perfectly matched.

Anyone?

Cross-posted to ms_dot_net and regexp.

Advertisements

Ymatebwch

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s