正则匹配字符串就是解析字符串的特征,然后用正则的语言把它表达出来。
推荐两个我使用的文档和工具:
正则表达式入门教程
正则表达式在线测试工具
位置(断言)
\b 匹配单词的开始或结束
^ 匹配字符串(行)的开始
$ 匹配字符串(行)的结束
字符
. 匹配除换行符(\n)以外的任意字符
\w 匹配字母数字下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\n 匹配换行
\r 匹配回车
数量
'*' 匹配零次或多次
'+' 匹配一次或多次
'?' 匹配零次或一次
{n} 重复n次
{n,} 重复n到n+次
{n,m} 重复n到m次
字符类
[character_group] 匹配character_group中任何的单个字符
[^character_group] 匹配不在character_group中的任何单个字符
[first-last] 匹配从第一个到最后一个的范围中的任何单个字符
分组
(exp) 匹配exp,并捕获文本到一个从 1 开始的序号中
(?<name>exp) 匹配exp,并捕获文本到name命名组中
(?:exp) 匹配exp,不捕获,不分配
(?=exp) 零宽度正预测先行断言,匹配exp前面的位置
(?!exp) 零宽度负预测先行断言,匹配后面跟的不是exp的位置
(?<=exp) 零宽度正回顾后发断言,匹配exp后面的位置
(?<!exp) 零宽度负回顾后发断言,匹配前面不是exp的位置
(?>exp) 非回溯(也称为“贪婪”)子表达式
反向引用
\num 后向引用。匹配编号子表达式的值
\k<name> 命名后向引用。匹配命名表达式的值。
选项
i 不区分大小写
m 多行模式(一行相当于一个字符串)
s 单行模式(多行相当于一行)