try^(?!.*nice)or depending on the context, you can use a sophisticated alternation construct

解决方案 »

  1.   

    楼主可以换个思维方式,就用:
    if(String.IndexOf("nice")>-1)
    {
    ...
    }
    else
    {
    ...
    }
      

  2.   

    这个我知道,但是我匹配的是一个大string,中含很多东西,所以这样写太麻烦了saucer(思归) ,我试过了,似乎不行啊,你说的alternation construct是否以下部分:(?:pattern) 
    匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。 (?=pattern) 
    正 向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如, 'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。 (?!pattern) 
    负 向预查,在任何不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始 
      

  3.   

    show your string and tell us what kind of matching you want
      

  4.   

    <a href="viewthread.php?tid=653126&extra=page%3D1&stock=trade" >要获取的内容1</a>
    &nbsp; &nbsp;( <img src="images/2003cn/multipage.gif" align="absmiddle" boader="0"> <a href="viewthread.php?tid=653126&page=1&extra=page%3D1">1</a> <a href="viewthread.php?tid=653126&page=2&extra=page%3D1">2</a> )</td></tr></table>
    </td><td bgcolor="#F5F5FF" align="center">
    <a href="viewpro.php?uid=210307">要获取的内容2</a>
    <br><span class="smalltxt">2005-2-18</span></td>要获得的是:"要获取的内容1","要获取的内容2",中间的"
    &nbsp; &nbsp;( <img src="images/2003cn/multipage.gif" align="absmiddle" boader="0"> <a href="viewthread.php?tid=653126&page=1&extra=page%3D1">1</a> <a href="viewthread.php?tid=653126&page=2&extra=page%3D1">2</a> )</td></tr></table>
    </td><td bgcolor="#F5F5FF" align="center">"很难表达出来,我该怎么办来源,一张网页内容
      

  5.   

    这样可以的:
    string s_reg=@"^(?!nice)\w*$";
      

  6.   

    听说将来改进的证则表达式将可以用更加好的表述方式:
    [^(nice)]但现在好像不能用。
      

  7.   

    saucer(思归) ,需要匹配以下的string
    string test="<a href="viewthread.php?tid=653126&extra=page%3D1&stock=trade" >要获取的内容1</a>
    &nbsp; &nbsp;( <img src="images/2003cn/multipage.gif" align="absmiddle" boader="0"> <a href="viewthread.php?tid=653126&page=1&extra=page%3D1">1</a> <a href="viewthread.php?tid=653126&page=2&extra=page%3D1">2</a> )</td></tr></table>
    </td><td bgcolor="#F5F5FF" align="center">
    <a href="viewpro.php?uid=210307">要获取的内容2</a>
    <br><span class="smalltxt">2005-2-18</span></td>"
    中的"要获取的内容1"和"要获取的内容2"
    之所以询问[^nice]的问题,是想实现类似
    <a href=[^<>]viewthread.php[^<>](?<link1>[^<>]*?)[^<>] >(?<title1>[^<>]*?).*<a href=[^<>]viewpro.php[^<>](?<link2>[^<>]*?)[^<>]>(?<title2>[^<>]*?)的功能,当然以上的语法事实上实现不了,但能表达我的意思
    其中:(?<title1>[^<>]*?).*
    的.*希望把中间杂乱无章的内容去掉,另外为了不要过滤掉网页中其他条目,我试图让其不过滤某些特征,比如viewpro.php,所以就询问了如何匹配完整字符串的否
      

  8.   

    if the string is as what you said, your pattern seems ok with the greedy matching if you add "</a>", for example
    Regex re = new Regex(@"<a href=[^<>]viewthread.php[^<>](?<link1>[^<>]*?)[^<>]>(?<title1>[^<>]*?)</a>.*<a href=[^<>]viewpro.php[^<>](?<link2>[^<>]*?)[^<>]>(?<title2>[^<>]*?)</a>",
    RegexOptions.IgnoreCase|RegexOptions.Singleline);
    or
             string s= "................"; Regex re = new Regex(@"<a\s+[^>]+>(?<title1>[^<]+)</a>.*<a\s+[^>]+>(?<title2>[^<]+)</a>", 
    RegexOptions.IgnoreCase|RegexOptions.Singleline); Match m = re.Match(s);
    if (m.Success)
    {
    Console.WriteLine("text1:{0}", m.Groups["title1"].Value);
    Console.WriteLine("text2:{0}", m.Groups["title2"].Value);
    }
      

  9.   

    用RegexOptions.Singleline可以匹配一次,但是这个网页有几十条类似的重复,用什么方法可以全部捕获string stringRegex = @"<a href=[^<>]viewthread.php[^<>](?<link1>[^<>]*?)[^<>]>(?<title1>[^<>]*?)</a>.*<a href=[^<>]viewpro.php[^<>](?<link2>[^<>]*?)[^<>]>(?<title2>[^<>]*?)</a>"; Regex re = new Regex(stringRegex,RegexOptions.Singleline|RegexOptions.IgnoreCase  );
    string t1;
    string t2;
    ArrayList a1 = new ArrayList ();
    ArrayList a2 = new ArrayList (); foreach (Match m in re.Matches(t))
    {
    t1 = m.Groups["link1"].ToString();
    t2 = m.Groups["title1"].ToString();


    a1.Add(t1);
    a2.Add(t2);


    }
      

  10.   

    我做了一个断点,捕获的时候如下:<a href=\"viewthread.php?tid=653370&stock=trade\" target=\"_blank\"><img src=\"images/2003cn/red_folder.gif\" border=\"0\"></a></td>\n<td bgcolor=\"#F5F5FF\" align=\"center\">&nbsp;</td>\n<td bgcolor=\"#FfffFF\" onMouseOver =\"this.style.backgroundColor='#F5F5FF'\" onMouseOut =\"this.style.backgroundColor='#FfffFF'\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\" style=\"table-layout: fixed; word-wrap: break-word\"><tr><td>\n<a href=\"redirect.php?tid=653370&goto=newpost#newpost\"><img src=\"images/2003cn/firstnew.gif\" border=\"0\" align=\"absmiddle\"></a>\n<a href=\"viewthread.php?tid=653370&extra=page%3D1&stock=trade\" >希望匹配的内容1</a>\n</td></tr></table>\n</td><td bgcolor=\"#F5F5FF\" align=\"center\">\n<a href=\"viewpro.php?uid=75103\">希望匹配的内容2</a>
    出现了大量的\n,用Singleline屏蔽\n是有效的,但为何只有一个匹配
      

  11.   

    解决了,.*碰到\n做不下去,所以Singleline就能跑,所以用[^<>]代替\n就行了