你的位置:首页 > Java教程

[Java教程]正则表达式的常用语法


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

正则表达式包括普通字符(例如,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定位点和序列
|替换