正则表达式的常用语法

“正则表达式”描述在搜索文本正文时要匹配的一个或多个字符串。 该表达式可用作一个将字符模式与要搜索的字符串相匹配的模板。

正则表达式包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”)。

特殊字符

若要匹配这些特殊字符之一,必须首先转义字符,即,在字符前面加反斜杠字符 (\)。 例如,若要搜索“+”文本字符,可使用表达式“\+”。

元字符 行为 示例
* 0次或者多次匹配前面的字符或者子表达式,等价于{0,} ta*可以和t , ta taaaaa进行匹配
+ 1次或者多次匹配前面的字符或者子表达式,等价于{1,} ta+可以和ta taaaaa进行匹配

0次或者1次匹配前面的字符或者子表达式,等价于{0,1},

 

当?紧随其他符号的时候,会启用非贪婪模式

 

ta?可以和t , ta进行匹配

 

ta*?和taaaaa进行匹配时,会匹配t;但是ta?和taaaaa

进行匹配时会匹配ta

^

匹配字符串开始的位置,表示从字符串的初始位置开始寻找

 

当放在[]里面时,代表不匹配[]其中的字符

 

^\d{2}表示匹配字符串从头开始的2个数字

 

[^abc]代表不匹配a,b,c三个任意元字符

 

$ 匹配字符串结束的位置,表示字符串的结束位置 \d{2}$匹配结尾处的两个数字
. 匹配除了换行符\n的任意单个字符 如果需要匹配换行符,则要写成[\s\S]类似的 b.b与bob,bsb都可以匹配
[] 匹配[]中的任意一个字符 [abcd]匹配a,b,c,d中的任何一个
{} 表示重复前面字符的重复次数 a{2,4}匹配aa,aaa,aaaa
() 表示一组 (a*)ccc 匹配ccc和accc
| 表示在多个选项之间进行选择 a|b|c等价于[abc]
\ 对于上面的这些字符都有特殊含义,如果想要找到不是特殊含义的,可以加\来进行转义 \\ 与\匹配   \+与+匹配
/ 代表正则表达式的开始和结尾 /book\+/ig

元字符

有一些特殊的字符

元字符 行为 示例
\b 与一个字的边界匹配,就是字与空格间的位置 er\b与never中的er匹配,但是与verb中的er不匹配
\B 不与一个字的边界匹配,就是字与空格间的位置 er\B与never中的er不匹配,但是与verb中的er匹配
\d 等效于 [0-9] \d{2,4}与12,123,1234匹配
\D 等效于 [^0-9] \D{2,4}与AC,ASCF匹配
\w 等效于 [A-Za-z0-9_]  
\W 等效于 [^A-Za-z0-9_]  
(模式) 与模式匹配,并保存匹配项 (chapter)[1-9]匹配chapter4时,会保存chapter以方便以后用
(?:模式) 与模式匹配,但是不保存匹配项  
(?=模式)

找到一个匹配项后,将在匹配文本之前开始搜索下一个匹配项。

 不会保存匹配项以备将来之用。

^(?=.*\d).{4,8}$ 对密码应用以下限制:其长度必须介于 4到 8 个字符之间,

并且必须至少包含一个数字。

在该模式中,.*\d 查找后跟有数字的任意多个字符。 对于搜索字符串“abc3qr”,这与“abc3”匹配。

从该匹配项之前(而不是之后)开始,.{4,8} 与包含 4-8 个字符的字符串匹配。

这与“abc3qr”匹配。

^ 和 $ 指定搜索字符串的开始和结束位置。 这将在搜索字符串包含匹配字符之外

的任何字符时阻止匹配。表示先做(?=)中的表达式,然后再对整体做?=模式之后的正则表达式

优先级

下图从高到低的讲了一下运算符的优先级排序

运算符 说明
\ 进行转义字符
(),(?:),(?=) 括号和中括号
*,+,?,{n,} 限定符
^,$,\d,\D,\w,\W 定位点和序列
| 替换

 

posted on 2016-09-13 17:28  bless-19946  阅读(404)  评论(0编辑  收藏  举报

导航