123.123.123.11 ref.
123.123.123.10 ref
123.123.123.110 dfsgsdf
123.123.123.19 mkfgjh如何匹配非:123.123.123.10.+

解决方案 »

  1.   


    string message = "123.123.123.10 ref";
    Regex reg = new Regex(@"^123\.123\.123\.10 \w+$");
    Console.WriteLine(reg.IsMatch(message));
      

  2.   

    楼上正确 
    or
    Regex reg = new Regex(@"^(123\.){3}10 \w+$");
      

  3.   

    看来我问题得改下了:
    123.13.123.11 rdfsadfef. 
    123.123.123.10 ref 
    1.3.123.10 dfsgsdf 
    asdfasdf
    asdfasdfasdfasdfasdf2345234ewrqw52135
    123.1.12.19 mkfgweqrqwerqwerjh 如何匹配"非:123.123.123.10.+ "
    行可以说其它行与这行就是根本不同的行,主要的思想还是"非"
      

  4.   

    string message = "123.123.123.10 ref";
    Regex reg = new Regex(@"^123\.123\.123\.10 \w+$");
    Console.WriteLine(!reg.IsMatch(message));
    reg.IsMatch(message) -> !reg.IsMatch(message)
      

  5.   

    需求不明确,如果说不同,是哪里不同,如何与其它行区别如果说前面123.123.123.10这部分是固定的,只有后面是变化的,那又哪里用得着正则呢,直接
    if(!str.StartsWith("123.123.123.10"))
    判断一下也就是了foreach (string s in richTextBox1.Lines)
    {
        if (!s.StartsWith("123.123.123.10"))
            richTextBox2.Text += "true\n";
        else
            richTextBox2.Text += "false\n";
    }
      

  6.   

    莫非是这样?@“(?<=^|\r\n)(?!123\.123\.123\.10).+”
      

  7.   


    string message = "123.123.123.10 ref"; 
    Regex reg = new Regex(@"(?<=^|\r\n)(?!123\.123\.123\.10).+"); 
      

  8.   

    wuyazhe 及sxmonsy 接近我想要的结果,我再把问题说明下:1111111111111
    前边有内容,不定123.123.123.10后边有内容,不定
    3333333333333
    4444444444444
    如何匹配"非:.+123.123.123.10.+ " 
    行 匹配结果是,
    11111111111113333333333333
    4444444444444
      

  9.   

    这个很简单啊
                textBox2.Text = Regex.Replace(textBox1.Text, @"\n.*123\.123\.123\.10.*\n", "\n\r\n");
      

  10.   

    说实在的,这个还是没有必要用正则来做首先要看你的源字符串是什么形式的,如果源字符串是一行一行的来判断的,那么用 IndexOf 最简单了
    如果源字符串是多行的,那么用 \n 进行 Split 后,再对所得数组每个元素用 IndexOf 来判断过滤,然后再组合一下也很简单的当然,如果是源字符串是多行的,那么用正则来做语句上简洁一些
    string result = Regex.Replace(str, @"^.*?123\.123\.123\.10.*$", "", RegexOptions.Multiline);但是话说回来,楼主既然不懂正则,这种所谓的简洁也是完全没必要的,因为这种代码你无法维护,出了问题也不知道是哪里的问题
      

  11.   

    谢谢      我想问下有没有什么网站是写这些符号的含义的阿?
    我在索引里面查找都是带个字的如#elif    这又看的我迷糊
    上网站上有的符号呢有时查不到的?困惑
      

  12.   

    看来诸位还是没明白我的意思呀,后几位都只是实现的简单的匹配,并不是我要求的,我要的是非匹配的,而后几位仁兄提供的都是直接匹配的,另:为了尽早找到答案,我得说下:我研究并使用正则表达式有段时间了,可以说不是新人了,所以麻烦先看清问题,再解答不迟-----------------------------------------------------------
    wuyazhe 及sxmonsy 接近我想要的结果,我再把问题说明下: 1111111111111 
    前边有内容,不定123.123.123.10后边有内容,不定 
    3333333333333 
    4444444444444 
    如何匹配"非:.+123.123.123.10.+ " 
    行 匹配结果是, 
    1111111111111 3333333333333 
    4444444444444
      

  13.   

    如果问题不是很有深度,而又多天没有得到解决,请从自身查找原因MatchCollection mc = Regex.Matches(str, @"^(?!.*123\.123\.123\.10).*$", RegexOptions.Multiline);
    foreach (Match m in mc)
    {
        richTextBox1.Text += m.Value + "\n";
    }
    你说我们给的都不对,那就只好猜测一下了,既然Replace都不对,那么楼主要的可能是提取,但如果是提取,又有几点让我想不通问题一:
    楼主给出的
    匹配结果是,
    11111111111113333333333333
    4444444444444让我不明白的是1111111111111和3333333333333之间为什么会有一个空行,这分明是替换后的结果,而不是提取后的结果问题二:
    这种问题直接用string的Replace就能搞定,楼主为什么一定要用正则,如果给不出一个合理的理由,只能说楼主不懂正则,而且在滥用正则
      

  14.   

    问题终于解决了,问题 
    1在我没表达清楚,
    2在我测试时由于思维问题,一直按自己的说法去测试各位提供的代码,而没满足我的需求,且我使用的是一个文本编辑器Emeditor,所以root_ 及HimeTale 提供的方法,我没有采纳以上是我的问题,我为此向两位道歉惯例,贴上我是如何解决的:
    解决方法源于22楼的root_提供的代码,相应的正则表达式是:
    ^(?!.*123\.123\.123\.10).*$

    ^(?!.*123.123.123.10).*$===================================
    另,我要处理的问题是这样的:
    2008-07-14 15:44:40 W3SVC491 60.27.236.4 GET /Item/How-To-Connection-My-Computer-Flow-IP-yongfa365.html - 80 - 74.6.22.106 Mozilla/5.0+(compatible;+Yahoo!+Slurp;+http://help.yahoo.com/help/us/ysearch/slurp) 200 0 0
    2008-07-14 15:44:51 W3SVC491 60.27.236.4 GET /item/Clear.bat-System-Windows-98-XP-2003-yongfa365.html - 80 - 124.73.140.102 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.0) 200 0 64
    2008-07-14 15:44:51 W3SVC491 60.27.236.4 GET /item/Clear.bat-System-Windows-98-XP-2003-yongfa365.html - 80 - 124.73.140.102 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.0) 206 0 64
    2008-07-14 15:47:11 W3SVC491 60.27.236.4 GET /Articles.xml - 80 - 65.214.44.28 Bloglines/3.1+(http://www.bloglines.com;+1+subscriber) 200 0 64
    2008-07-14 15:47:47 W3SVC491 60.27.236.4 GET /Item/SQL-Server-Store-More-Than-8000-WRITETEXT-UPDATETEXT-yongfa365.html - 80 - 59.125.118.13 Trend+Micro+Web+Protection+Add-On+1.10.1144 200 0 0找出上而面的行里的,不是以200 0 64结尾的行,然后删除,至于有什么用,这里就不多说了,我按上面的正则改造后是:
    ^(?!.*200 0 64).*$而我一直是这么测试的:
    ^(?!.*200 0 64)$
    没有后边的.* 因为我觉得后边已经没有内容了,所以没写 .* 而不写就不对,写了才行,哪位高人可以再指点下。
      

  15.   

    ^(?!.*200 0 64)$ 
    ^和(?!.*200 0 64),以及$这三部分都是零宽度的,按这样来写,结果还是零宽度的,当然是不对了
    你是对(?!exp)这个表达式理解不够,找下这方面的资料看下吧另外^(?!.*123.123.123.10).*$ 这种方式虽然可以匹配到结果,但这样写是不对的,因为你把要匹配的范围扩大了
    .是可以匹配\n以外的任意字符的,也就是说
    kkk123a123b123c10sss
    这样的符合条件的行也会被去掉的
      

  16.   

    晓得,只是我的内容里出现 kkk123a123b123c10sss  基本上是不可能的,所以我就把.当成匹配.了,^和(?!.*200 0 64),以及$这三部分都是零宽度的,按这样来写,结果还是零宽度的,当然是不对了,
    明白了,(?!exp)前或后得有内容的,以前也想常想到过,只是觉得.*这个也可以是没有任何字符,没想到这样就可以了,
    可以是没长度 != 一定没长度,而那三种都是一定没长度的情况。本来觉得自己 正则学的还不错,虽然感觉学的只是皮毛,没想到还是太皮毛了。