非打印字符

# 换行符
\n

# 回车符
\r

# 匹配空白字符
\s

# 匹配非空白字符
\S

# 匹配制表符
\t

# 匹配垂直制表符
\v

# 匹配一个单词边界'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'
\b

# 匹配非单词边界
\B

# 匹配一个数字字符
\d

# 匹配非数字字符
\D

特殊字符

# 匹配输入字符的结尾位置
$

# 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用
()

# 匹配前面的子表达式零次或多次
*

# 匹配前面的子表达式一次或多次
+

# 匹配除换行符 \n 之外的任何单字符
.

# 标记一个中括号表达式的开始
[

# 字符集合。匹配所包含的任意一个字
[xyz]

# 字符范围。匹配指定范围内的任意字符
[a-z]

# 匹配任何数字。类似于 [0123456789]
[0-9]

# 匹配任何不在指定范围内的任意字符
[^a-z]

# 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符
?

# 字符转义
\

# 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合
^

# 标记限定符表达式的开始, 标记字符出现次数
{

# n 是一个非负整数。匹配确定的 n 次
{n}

# 指明两项之间的一个选择
|
# 匹配x或y
x|y

限定符

# 匹配0次或多次
*

# 匹配1次或多次
+

# 匹配0次或一次
?

# 匹配确定的n次
{n}

# 至少匹配n次
{n,}

# 最少匹配n次且最多匹配m次
{n, m}

贪婪与非贪婪

# 贪婪模式匹配
# 例子<h1>test</h1>

# 表达式匹配从开始小于符号 (<) 到关闭 h1 标记的大于符号 (>) 之间的所有内容。
# 匹配<h1>test</h1>全部
/<.*>/

非贪婪模式匹配

# 只需要匹配开始和结束 h1 标签,下面的非贪婪表达式只匹配 <h1>。
/<.*?>/

正则分组

# 分组是用圆括号“()”括起来的正则表达式,匹配出的内容就表示一个分组
# 区号-电话号

(\d{3,4})\-(\d{6,8})

匹配第一个:

line1:blabla:etcetc
line2:blabla2:etcetc2
line3:blabla3:etcetc3

^([^:]*):