user1723368
user1723368

Reputation: 25

Regex exception in ASP.NET

I have a problem using Regex, in ASP.NET website. I wanna get the counts of two regexes from a website source, using a webclient to download the source.

I wanna get the counts of a regex, searching on tmz.com website.

Basicly I have a text file with keywords on every line. I put 2 artists, and it should go to each line, make a regex pattern like artist1+regex+keyword+regex+artist2. The ideea is to see how many counts (searches are found) with my keywords and the artists.

Here is the source code of my function.

 int counts = 0;
    string line = "";
    StreamReader read = new StreamReader(@"C:\words.txt");
    WebClient web = new WebClient();
    string content = web.DownloadString("http://www.tmz.com/search/news/" + artist1 + " " + artist2);
    while ((line = read.ReadLine()) != null)
    {

            string pattern = artist1 + "[a-zA-Z0-9\\s]{1,10}" + line + "[a-zA-Z0-9\\s]{1,10}" + artist2;
            MatchCollection matches = Regex.Matches(pattern, content);
            counts += matches.Count;
            string pattern2 = artist2 + "[a-zA-Z0-9\\s]{1,10}" + line + "[a-zA-Z0-9\\s]{1,10}" + artist1;
            MatchCollection matches1 = Regex.Matches(pattern2, content);
            counts += matches1.Count;
    }
    read.Close();
    return counts;

But I get this error: Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

And the red line that I got (line with error is this one): Line 54: MatchCollection matches = Regex.Matches(pattern, content);

Exact exception:

System.ArgumentException was unhandled by user code
  Message=parsing "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:meebo="http://www.meebo.com/" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://ogp.me/ns/fb#">
<head>
        <script type="text/javascript">var _sf_startpt=(new Date()).getTime()</script>
    <title>Search bowwow tyra - news - Page 1 | TMZ.com </title>
    <meta name="robots" content="all"/>
    <meta name="description" content="Celebrity Gossip and Entertainment News, Covering Celebrity News and Hollywood Rumors. Get All The Latest Gossip at TMZ - Thirty Mile Zone" />
    <meta name="generator" content="Crowd Fusion 2.0-enterprise" />
    <!-- Site Verification -->
    <meta name="google-site-verification" content="UUmtbUBf3djgPpCeLefe_PbFsOc6JGxfXmHzpjFLAEQ" />
    <meta name="verify-v1" content="Wtpd0N6FufoE2XqopQJoTjWV6Co/Mny9BTaswPJbPPA=" />
    <meta name="msvalidate.01" content="AFEB17971BCF30779AEA662782EF26F4" />
    <meta name="y_..." - Too many )'s.
  Source=System
  StackTrace:
       at System.Text.RegularExpressions.RegexParser.ScanRegex()
       at System.Text.RegularExpressions.RegexParser.Parse(String re, RegexOptions op)
       at System.Text.RegularExpressions.Regex..ctor(String pattern, RegexOptions options, Boolean useCache)
       at System.Text.RegularExpressions.Regex.Matches(String input, String pattern)
       at _Default.tmz(String artist1, String artist2) in c:\Users\icebox19\Documents\Visual Studio 2010\WebSites\WebSite3\Default.aspx.cs:line 52
       at _Default.Button1_Click(Object sender, EventArgs e) in c:\Users\icebox19\Documents\Visual Studio 2010\WebSites\WebSite3\Default.aspx.cs:line 89
       at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
       at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
       at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
       at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
       at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
  InnerException:

PS: I use ASP.NET website, not c# standalone application, this is a webpage.

Upvotes: 0

Views: 619

Answers (1)

urlreader
urlreader

Reputation: 6605

it is because you use the wrong parameters. it should be Regex.Matches(INPUT, PATTERN).

Upvotes: 3

Related Questions