这两个正则表达式有什么区别? ((+|-)\d)?\d*[+|-]\d+ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你下载个小软件 http://www.unibetter.com/deerchao/downloads/RegexTester.zip打开后自己把 正则写上, 源串写上,就告诉你匹配什么了.很好用.区别一使便知. 本质上没什么区别,都是错误的,没什么用处的正则而已至于组,可以看下,写的不是很详细,不过可以做下参考http://www.cnblogs.com/lxcnn/archive/2007/06/10/777975.html 第一个是错的,主要原因在于:(+|-),这个并不是字符簇,所以无法用|符号进行选择,字符簇是这样的“[]”,所以第一个是错的,解释一下第二个:[+|-]就是有个加号或者减号,\d表示数字,后面的+号出现表示前面的\d出现1次或多次。至于分组的概念好理解一点是html标签,比如你要匹配<p></p>,<table></table>,你就要对前面的p和table进行分组,然后在后面引用这个分组,不多举例,比较复杂,具体找本正则表达式的书看看吧! 捕获组就是使用regex之后, 希望得到的那几个部分的字符串。-_-! ((+|-)\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也是一样 100分 邮件系统 收发邮件 邮件 组件 比例条问题 windows services 逐行读取文本文件速度接近老牛。。,该怎么解决? datagrid绑定问题 求教文本读写问题 如何把XML文件显示在dataView中? 求教一个C#与C++不同的地方。 请教我想做一个类似安装过程式的界面如何做?就是可以点击“上一步”“下一步”那样 要用哪个命名空间 C#用户注册代码? c#的问题?在线等
打开后自己把 正则写上, 源串写上,就告诉你匹配什么了.很好用.区别一使便知.
本质上没什么区别,都是错误的,没什么用处的正则而已
至于组,可以看下,写的不是很详细,不过可以做下参考
http://www.cnblogs.com/lxcnn/archive/2007/06/10/777975.html
捕获组就是使用regex之后, 希望得到的那几个部分的字符串。
-_-!
((+|-)\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也是一样