正则表达式的常用语法

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

正则表达式包括普通字符(例如,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}$匹配结尾处的两个数字
. 匹配除了换行符 的任意单个字符 如果需要匹配换行符,则要写成[sS]类似的 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

元字符

有一些特殊的字符

元字符 行为 示例
 与一个字的边界匹配,就是字与空格间的位置 er与never中的er匹配,但是与verb中的er不匹配
B 不与一个字的边界匹配,就是字与空格间的位置 erB与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 定位点和序列
| 替换
原文地址:https://www.cnblogs.com/bless19946/p/5869187.html