\<SCRIPT\s+language=["']*javascript["']*\s+src=["']*(([a-zA-Z0-9_-]+)[.](js))["']*\>\</script\>
上面的正则是我简单的改写的能够匹配:
我怎么获取1111.js呢?也就是(([a-zA-Z0-9_-]+)[.](js))匹配的内容。怎么做呢?我从html中得到了<script language=javascript src=></script>
,怎么做可以得到(([a-zA-Z0-9_-]+)他匹配的内容。

解决方案 »

  1.   

    晕啊。没有人回复,我直接用(([a-zA-Z0-9_-]+)[.](js))在匹配一次就好了。哭!
      

  2.   

    楼主的那个正则,取m.Groups[1].Value即可,不过楼主的正则还有可优化的空间Regex reg = new Regex(@"(?is)<script[^>]*?src=(['""]?)(?<src>[^'""\s>]+\.js)\1[^>]*>");
    MatchCollection mc = reg.Matches(yourStr);
    foreach (Match m in mc)
    {
        richTextBox2.Text += m.Groups["src"].Value;
    }
      

  3.   

    要完全的匹配<script language=javascript src=></script>
    这句话,你给的,不能做到完全,可以匹配很多。
      

  4.   

    这样?
    Regex reg = new Regex(@"(?is)<script[^>]*?src=(['""]?)(?<src>[^'""\s>]+\.js)\1[^>]*>\s*</script>");还是说一定要带language=javascript 
    Regex reg = new Regex(@"(?is)<script\s+language=javascript[^>]*?src=(['""]?)(?<src>[^'""\s>]+\.js)\1[^>]*>\s*</script>");
      

  5.   


                string str = "<script language=javascript src=abcd.js></script>";            Regex regex = new Regex("<script\\s*language=['\"]?javascript['\"]?\\s*src=['\"]?(?<src>[^'\"\\s>]*)", RegexOptions.IgnoreCase | RegexOptions.Compiled);
                Match match = regex.Match(str);
                if (match.Success)
                {
                    for (int i = 0; i < match.Groups.Count; i++)
                    {
                        Console.WriteLine(match.Groups[i]);
                    }
                }
      

  6.   

    你的不全,添加一下就好了。
    string str = "<script language=javascript src=abcd.js></script>";            Regex regex = new Regex("<script\\s*language=['\"]?javascript['\"]?\\s*src=['\"]?(?<src>[^'\"\\s>]*)></script>", RegexOptions.IgnoreCase | RegexOptions.Compiled);
                Match match = regex.Match(str);
                if (match.Success)
                {
                    for (int i = 0; i < match.Groups.Count; i++)
                    {
                        Console.WriteLine(match.Groups[i]);
                     }
                }
      

  7.   

    (?is)<script[^>]*?src=(['""]?)(?<src>[^'""\s>]+\.js)\1[^>]*>\s*</script>"(?i) 表示忽略大小写
    (?s) 单行模式,表示小数点“.”可以匹配任意字符
    那些如<srcipt、src=之类的固定字符没什么好解释的
    [^>]*? 不是“>”的任意字符,0个或任意多个,这里使用非贪婪模式,是因为<script与src=之间的字符一般来说比较少,如果用贪婪模式匹配到“>”再进行回溯,效率比较低,所以使用了非贪婪模式
    (['""]?)和后面的反向引用\1,作用是限制这里出现的标点配对出现,由于html语言要求并不严格,所以src=后面可以不加标点,也可以加“'”或“"”,这里是为了适配这三种可能情况的
    (?<src>Expression) 命名捕获组,把表达式Expression匹配到的内容捕获到src组中,以备后面引用
    [^'""\s>]和[^>] 排除型捕获组就不用解释了吧