((+|-)\d)?\d*
[+|-]\d+

解决方案 »

  1.   

    你下载个小软件 http://www.unibetter.com/deerchao/downloads/RegexTester.zip
    打开后自己把 正则写上, 源串写上,就告诉你匹配什么了.很好用.区别一使便知.
      

  2.   


    本质上没什么区别,都是错误的,没什么用处的正则而已
    至于组,可以看下,写的不是很详细,不过可以做下参考
    http://www.cnblogs.com/lxcnn/archive/2007/06/10/777975.html
      

  3.   

    第一个是错的,主要原因在于:(+|-),这个并不是字符簇,所以无法用|符号进行选择,字符簇是这样的“[]”,所以第一个是错的,解释一下第二个:[+|-]就是有个加号或者减号,\d表示数字,后面的+号出现表示前面的\d出现1次或多次。至于分组的概念好理解一点是html标签,比如你要匹配<p></p>,<table></table>,你就要对前面的p和table进行分组,然后在后面引用这个分组,不多举例,比较复杂,具体找本正则表达式的书看看吧!
      

  4.   


    捕获组就是使用regex之后, 希望得到的那几个部分的字符串。
    -_-!
      

  5.   


    ((+|-)\d)?\d* 
    最基础的,+在正则中有特殊意义,相当于{1,},用在这里要转义,或者把(+|-)替换为[+-],(+|-)这样写在一些正则工具中是不会报错的,但是用在程序中就会报下面的错误了
    正在分析“((+|-)\d)?\d*”- 限定符 {x,y} 前没有任何内容。
    在这个错误纠正以后,((\+|-)\d)?\d*,它是可以匹配空字符的,这有什么意义呢?
    //一个例子
    string test = "+123,-456,+001,|789";
    MatchCollection mc = Regex.Matches(test, @"((\+|-)\d)?\d*");
    foreach (Match m in mc)
    {
        richTextBox2.Text += "匹配到的内容:" + m.Value + "\n";
    }
    richTextBox2.Text += "匹配成功数:" + mc.Count;
    //输出:
    匹配到的内容:+123
    匹配到的内容:
    匹配到的内容:-456
    匹配到的内容:
    匹配到的内容:+001
    匹配到的内容:
    匹配到的内容:
    匹配到的内容:789
    匹配到的内容:
    匹配成功数:9不知道楼主看的是什么书,不过这种书不看也罢
    [+|-]\d+ 
    这一个相对来说要好些,至少在某种特殊场合如提取中还是能用的
    但它的问题在于,在[]是不需要用“|”来表示或的关系的,这里加了一个“|”,也就多了一个可匹配的字符,下面例子中可以看到
    另外就是\d+是可以匹配001之类0开头的数字的,前面有+-,我想这种数字应该也是不被允许的吧
    //一个例子
    string test = "+123,-456,+001,|789";
    MatchCollection mc = Regex.Matches(test, @"[+|-]\d+");
    foreach(Match m in mc)
    {
        richTextBox2.Text += "匹配到的内容:" + m.Value + "\n";
    }
    richTextBox2.Text += "匹配成功数:" + mc.Count;
    //输出:
    匹配到的内容:+123
    匹配到的内容:-456
    匹配到的内容:+001
    匹配到的内容:|789
    匹配成功数:4
    除非楼主说“|789”也是楼主想匹配的内容,那我无话可说,+001也是一样