初学正则表达式,请大家讲解一个入门的例子
Match m = Regex.Match("abracadabra", "(a|b|r)+");
label1.Text = m.ToString();//结果是abra
请问该表达式表示匹配的意思是什么?
现在只是知道各个符号的意思,连成一句就不懂了。
请大家指教
问题点数:20、回复次数:10Top
1 楼fellowcheng(鹰击长空)回复于 2005-02-25 14:37:17 得分 0
'|'或者,'+'一个至多个Top
2 楼yizhixiaozhu(天啦,手都起茧了)回复于 2005-02-25 14:38:38 得分 0
okTop
3 楼vinge(大志)回复于 2005-02-25 14:40:24 得分 0
明白'|'或者,'+'一个至多个
整个表达式表示什么意思啊??
改成"(a|b|r|d)+",结果还是abraTop
4 楼vinge(大志)回复于 2005-02-25 14:59:24 得分 0
如果是
Match m = Regex.Match("abracadabra", "(a|b|d)+");
结果是什么呢?Top
5 楼minajo21(大眼睛)回复于 2005-02-25 15:04:28 得分 2
http://www.regexlib.com/Top
6 楼lonelydreamsym(惊梦)回复于 2005-02-25 15:05:56 得分 0
自己试不一下不就知道了Top
7 楼vinge(大志)回复于 2005-02-25 15:09:31 得分 0
我是想问一问,如果人家给我出了这么一道题,我应该怎么分析出答案?Top
8 楼yellowhwb(天の羽)回复于 2005-02-25 15:12:13 得分 18
Match m = Regex.Match("abracadabra", "(a|b|d)+");
是ab
也就是找到串“abracadabra”里,最长的一个符合(a|b|d)+的子串。
(a|b|d)+的意思是:
串str=xyz.....
从x开始,只要x是a或b或d,就再往下检查一位,如果y也是a或b或d,就如此继续,直到不符合为止,所得的串就是最大匹配的串!Top
9 楼vinge(大志)回复于 2005-02-25 15:14:09 得分 0
谢谢yellowhwb(雨花石) ,这么说我明白多了,
谢谢Top
10 楼supergoalcn(Supergoal)回复于 2005-02-25 21:46:07 得分 0
(a|b|r)+表示由这三个字母构成的串都可以匹配的。
yellowhwb(雨花石)的匹配方式解释正确,但最后一句话有问题,“所得的串就是最大匹配的串!”,这句话不正确,而应该是返回的是第一个匹配的字符串。
如果将Match m = Regex.Match("abracadabra", "(a|b|r)+"); 改成
Match m = Regex.Match("abracadabraa", "(a|b|r)+");
返回的仍是abra,而不是最长的abraa。Top




