我想匹配不再<>中间的字符串比如我想匹配aaa<a id="aaa">aaa</a>我只想匹配到<a></a>中间的aaa,而id="aaa"  这个aaa是不能匹配的用正则怎么作呢,谢谢

解决方案 »

  1.   

    <a(.*?)>(?<text>.*?)</a>
      

  2.   

    楼上的,我不一定是<a>中间的
    我只要是<>这样tag中间的我都不要匹配
    谢谢c#中如何用Regex.ismatch去做?
      

  3.   

    <(.*?)> (? <text> .*?) <(.*?)> 
      

  4.   

    楼上的不行啊Regex.IsMatch("<a href=\"aaa\">ababa</a>", @"<(.*?)>(?<aaa>.*?)<(.*?)>",  RegexOptions.IgnoreCase);
    为啥还是返回true?
    应该是false
      

  5.   

    "<(.*)>(aaa)<\/\1>|<(.*)\/>"
      

  6.   

    <(.*)>(aaa)<\/\1>这个绝对没问题啦.
      

  7.   

    哈哈,忘记了,要加开始和结束的限定符:^<(.*)>(aaa)<\/\1>$
      

  8.   

    楼上的 不行
    Regex.IsMatch("<a href=\"aaa\">aaa</a>", @"^<(.*)>(aaa)<\/\1>$", RegexOptions.IgnoreCase);怎么也返回false???
      

  9.   

    root_ 我的目的是要拿到网页上的 能看到的text 和我的关键字匹配则这个网页就是我要的网页
      

  10.   

    那就先对源字符串进行一下处理,把<...>标签替换掉,然后用IndexOf就可以了string test = "<a   href=\"aaa\"> ababa </a>";
    test = Regex.Replace(test, @"<[^>]*>", " ");
    if (test.IndexOf("aaa") > -1)
        MessageBox.Show("找到");
    else
        MessageBox.Show("未找到");或者是用委托来处理也可以
      

  11.   

    Regex.IsMatch(" <a   href=\"aaa\"> ababa </a> ",   @"<(.*?)>(?<aaa> .*?)<(.*?)>",     RegexOptions.IgnoreCase)
    可以的,你复制过去要把csdn设置的空格去掉就可以了
      

  12.   

     楼上的我是去掉空格了结果还是不对阿Regex.IsMatch("<a href=\"ababa\">ababa</a>", @"<(.*?)>(?<aaa>.*?)<(.*?)>", RegexOptions.IgnoreCase);居然也返回true???
      

  13.   


    //try<[a-z]+[^>]*>(?<text>[^<].*)</[a-z\d]+>
      

  14.   

    这个问题可以反过来想,就是将<>重的字符串排除掉
    string S = @"<br>a<b>aab<body>c</body>";
    S = System.Text.RegularExpressions.Regex.Replace(
        S, @"<[^>]*?>", "");
    Text = S;
      

  15.   


    Regex.IsMatch("<a href=\"aaa\">aaa</a>", @"^<([^\s]+)[^>]*>(aaa)<\/\1>$", RegexOptions.IgnoreCase);
    这样肯定没问题,之前是我没看到你还有 href 属性.
      

  16.   

    楼上的Regex.IsMatch("<a href=\"ababa\">baaab</a>", @"^<([^\s]+)[^>]*>(aaa)<\/\1>$", RegexOptions.IgnoreCase);这样也应该返回true, 不应该返回false,因为包含aaa
      

  17.   

    前面已经跟你说过了,你这种需求,直接IsMatch是不可以的,用正则处理一般有两种方法,一种是前面给出的,把<...>标签替换掉,然后判断,不过这种方面有个缺点,按伴水的方法,直接替换这空,哪果源字符串是这样的
    <p>aa<a href=\"ababa\">abaab</a></p>
    比如说关键字为“aaa”,按你的需求应该返回false的,但是如果<...>替换为空,替换后为aaabaab,那么结果就是true了
    我是把它替换为空格了,但是如果关键字中有空格,同样是个问题,或者是替换为特殊符号,不过也不太严谨,只是看你的需求了,如果关键字中不存在空格,用我上面的方法就可以了用正则的另一种方法就是委托
    //进行判断的事件里写如下代码
    string test = "<a href=\"ababa\"> baaab </a>";
    test = Regex.Replace(test, @"^[^<]*(?=<)|(?<=>)[^<>]*(?=<|$)|^[^<>]*$", myEvaluator);
    MessageBox.Show(check.ToString());//全局变量
    bool check = false;
    //委托
    private string myEvaluator(Match m)
    {
        //这里的text就是页面上显示的内容了,只不过并不是一次得到所有显示内容,而是多次得到的
        string text = m.Value;
        //这是关键字并不局限于“aaa”,只是一个例子,多个关键字也在这里处理
        if (text.IndexOf("aaa") > -1)
            check = true;
        return "";
    }
    当然,上面说的只是正则的处理方法,不用正则也可以做到,只是代码写起来要繁琐得多