最简单的正则表达式教程(一)

标题可能有点唬人 ,但是我确确实实想写一篇通俗易懂的正则表达式教程 .能帮助新手理解这个有用的东西.

  先得知道.正则表达式 可以 使用较短的字符串描述出来一段有规律的字符串.  从而被应用于查找  校验等地方.....

声明: 这篇是基础文章,高手可以略过.如有错误之处,请指出. 

---------------------------------------分割----线-------------------------------------------------------------------------

先讲字符集(就是集合啦)  .使用的是 [ ] (英文中括弧)

[123]     有选择的单个字符哦 .  就是仅能匹配  1 2 3 三个数组

[0-9]   可以匹配数字

[a-z0-9A-Z]  可以匹配 数组以及字母(大小写都行)

 

而在字符集中括弧里面的前边加入 ^ 表示匹配没有包含在括弧里面的字符..  例如:  [^123]  34ddf 标红的被匹配4个(分别为 4 d d f)

每次[0-9]表示数字写是不是麻烦?? 

\d
匹配一个数字字符。等价于 [0-9]
\D
匹配一个非数字字符。等价于 [^0-9]
\w
匹配包括下划线的任何单词字符。等价于 [A-Za-z0-9_]
\W
匹配任何非单词字符。等价于 [^A-Za-z0-9_]

没有匹配字母的.. 只能自己写.

 

 

现在需求改动了.我需要匹配有一定连续次数的某个指定字符. 此时需要使用到 {} (大括弧  )

{n}  n为任意非负数    . 例如: [123]{3}   135312  将匹配标红地方. 而前面13 将不会匹配.因为就出现2次. 长度不对

{n ,} 比上面多了一个逗号,表示至少出现n次,n为任意非负数   .  例如: [123]{3 ,}  135312623312 匹配标红两段

{n,m} 比上面又多出了一个m. n` m为任意非负数 表示匹配连续次数为n到m的字符串.  例如:[123]{3, 4} 135312623312 仅匹配312 , 13  和 23312长度都不对.

上面就是控制次数的哦.不过还有一些控制次数的简单符号...

*     表示0次以上  . 相当鱼 {0,}

?     表示0 或者 1次 ,  相当于{0, 1}

+    表示1次或者以上  , 相当于  {1 ,}

 

好了控制次数的全部讲完了.   现在需求升级.   需要匹配2个数字开头 和 3个字母结束的的字符串. 看好啦!!!!

所以该正则表达式应该是  :    ^[0-9]{2}.*[a-zA-Z]{3}$

^  表示匹配开头位置

$   表示匹配结尾位置

假如有3个字符串:  1d1111ddd    11dddd1d   11dddddd  这个时候,上面的表达式仅能匹配 第三个: 11dddddd 

解惑:   .  代表除回车(\n)以外的任意字符   .* 当然指中间可以有任意数目的任意字符哦.

 

有时候.我希望匹配两个或者多个表达式.怎么办呢?  

比如: yahoo   yahu. 我都希望能匹配. 这个时候.就需要一个 或 的关键字符 |  (竖杠)

能够使用表达式:    yahoo|yahu  来匹配哦.

 

随着深入 ,你会发现想匹配 ^ $  .等等.这些正则表达式里面使用的字符  .但是匹配不上. 怎么回事呢.  

简单 .因为这些都是正则表达式的关键字,  匹配关键字得使用转义的反斜杠  \  , 例如 :  想匹配 [   一定是用 \[

现收集的需要转义的字符有:    * + . ? \ / ^ $ [] {} () |  对应的写作 \* \+ \. \? \\ \/ \^ \$ \[ \] \{ \} \(  \)  \|   在代码里面使用因为\是特殊字符.所以还得再加一个 \

 

---------------------------------------再分割---------------------------------------------------------------------------

好了,最基础的部分就是这些.   上面的都是铺垫.  主要学习正则表达式都是为了使用他校验  或者 获得匹配格式的字符 .  为了不让你们有阅读疲劳,, 我将以上作为一篇. 

 

 

 

posted @ 2014-01-04 14:25  qiuyang  阅读(383)  评论(0编辑  收藏  举报