Anchors

^

字符串的开始,或多行模式中的行开始

\A

字符串开头

$

字符串结束,或多行模式中的行尾

\Z

字符串结束

\b

匹配一个字边界,即字与空格间的位置

\B

非字边界匹配

\<

字符开始

\>

字符结束

字符类

\c

控制字符

\s

空格

\S

不是空格

\d

数字

\D

不是数字

\w

字符

\W

非字符

\x

十六进制数字

\O

八位数

POSIX风格

[:upper:]

大写字母

[:lower:]

小写字母

[:alpha:]

所有字母

[:alnum:]

数字和字母

[:digit:]

数字

[:xdigit:]

十六进制数字

[:punct:]

标点

[:blank:]

空格和tab

[:space:]

空白字符

[:cntrl:]

控制字符

[:graph:]

打印字符

[:print:]

打印字符和空格

[:word:]

数字,字母和下划线

断言Assertions

?=

前瞻断言

?!

否定性前瞻断言

?<=

后向断言

?!= or ?<!

否定性回顾断言

?>

一次性子表达式

?()

条件[if then]

?()|

条件[if then else]

?#

注解

Quanti­fiers量词

*

0或更多

{3}

精确3

+

1或更多

{3,}

3或更多

?

0 或 1

{3,5}

3, 4 或 5

添加一个?至一个量词让它变成非贪婪

转义序列

\

转义跟着的字符

\Q

开始文字序列

\E

结束文字序列

“Escaping”是一种处理字符的方法,字符在正则表达式中具有特殊含义,而不是特殊字符

常见元字符

^

[

.

$

{

*

(

\

+

)

|

?

<

>

转义字符通常使用\

特殊字符

\n

新行

\r

回车

\t

Tab

\v

垂直tab

\f

表单Feed

\xxx

八进制字符xxx

\xhh

十六进制字符hh

分组和范围

.

任何字符除新行外(\n)

(a|b)

a 或 b

(...)

分组

(?:...)

被动(非捕获)分组

[abc]

范围(a 或 b 或 c)

[^abc]

不是(a 或 b 或 c)

[a-q]

小写字母从a到q

[A-Q]

大写字母从A到Q

[0-7]

数字从0到7

\x

组/子模式数学“x”

模式修饰符

g

全局匹配

i *

不分大小写

m *

多行

s *

将字符串视为单行

x *

在模式中允许注释和空格

e *

Evaluate代替

U *

非贪婪模式

* PCRE 修饰符

字符串替换

$n

nth非被动分组

$2

"­xyz­" in /^(abc­(xy­z))$/

$1

"­xyz­" in /^(?:a­bc)­(xyz)$/

$`

匹配字符串之前

$'

匹配字符串后

$+

最后匹配的字符串

$&

整个匹配字符串

一些正则表达式实现使用 \ 代替 $.