正则表达式经常用到,以前都是去网上找写好的,然后找个测试工具测试下,自己不会写,也看不懂,终于下定决心,仔细学习。

其实以前也想过学,但每次看到那么多规则就失去兴趣了,所以今天打算弄些干货(我也不知道能不能弄出干货)

由于今天的目标是先读懂(单纯的认为读多了,慢慢的可能就会写了),所以肯定不会一来就写各种规则,网上那种文章太多,那也不是我的风格,我要一边读,一边写,一边学。

string regex = ",|,|\\s+";  
string[] split = Regex.Split(inputString, regex);

上面两行代码,应该经常用到,现在来读懂他

',' 和 ',' 就不多说了,中间的'|'指明两项之间的一个选择,所以前面表示的就是 ',' 或者','

\s 在正则规则里面有特殊的含义,表示匹配任何空白字符,包括空格、制表符、换页符等

那么为什么\s前面还有一个 \ ,这个问题我也在纠结,因为我用正则表达式测试工具测试时   ,|,|\s+  才能正确匹配,网上打大牛说,如果是用在程序中,需要把\s进行转义,不然不能识别出,好吧,只好打开我的VS了,我在VS里面改成了   ,|,|\s+  然后就报错了,说s是不能识别的转义序列,好吧,你赢了。

所以总结下:

1.如果是确定了输入的是正则表达式,就如测试工具,里面输入的都是正则表达时,这时就不用 \ 来转义了

2.如果是利用字符串来表示正则,如上面的代码 string regex = ",|,|\\s+"; 那么就需要用 \ 转义

如理解有误,请指出,我也好学习。

+ 表示匹配前面的子表达式一次或多次,这里就是匹配前面的空格字符一次或者多次,也就是说,一个或者多个空白字符,都被认为是“一个”

到这里,解析完了,上面的代码:遇到, , 或者空白字符时即切割字符串。如果没有+,每一遇到一个空白字符时就要切割一次,连续多个就要被切割多次。

第一句就解释了半天,干货好像没戏了。

 

第二句:^[1-9]\d*$  和   [1-9]\d* ,这两句都是匹配正整数,但是有区别的

^:匹配输入字符串开始的位置、$:匹配输入字符串结束的位置   \d 匹配一个数字字符,等价于 [0-9]

说实话,我是没读懂这解释是什么意思,所以我也就没懂上面两句的区别,试试呗,实践是检验真理的唯一标准

被测试的字符串:asdf  123456 asdf   

^[1-9]\d*$ 匹配结果: 没有匹配

 [1-9]\d*  匹配结果: 123456

好像懂了点什么,但是又说不出,奈何表达能力太差,机智的我又进行了几个测试:

  ^[1-9]\d* [1-9]\d*$      
asdf  123456 无匹配 123456
asdf  123456  (多了个空格) 无匹配 无匹配
123456  asdf 123456 无匹配
 123456  asdf (多了个空格) 无匹配 无匹配

 

 

 

 

 

现在好理解了吧:自己意会去

^字符串的第0个位置开始,不能从中间开始   如果^用在[]里面,如:[^]含义大变

^$表示从字符串开始到结束都要符合中间的规则,相当于被验证的字符串是一个整体,不能分开,匹配的结果只能是:无 或者 整个字符串完全匹配

 

今天就写到这里吧,算是简单认识了正则表达式,要看懂常用的,还有很远的路要走,一次写多了也记不住。

转载一篇文章,正则表达式全部符号解释。文章出处:http://www.cnblogs.com/yirlin/archive/2006/04/12/373222.html

posted on 2016-01-23 12:12  雪落千寒  阅读(241)  评论(0编辑  收藏  举报