1.字符集和单词
.at #.可以用于匹配除换行符之外的任意一个字符
[a-z]at #[]表示指定字符集
[a-zA-Z] #表示匹配所有英文字母
[0-9] #表示数字
“<” “>” #表示分隔符,能够严格地匹配一个单词
2.字符类
POSIX风格的正则表达式提供了预定义字符类
[[:alnum:]] #文字,数字字符
[[:alpha:]] #字母字符
[[:lower:]] #小写字母
[[:upper:]] #大写字母
[[:digit:]] #小数
[[:xdigit:]] #十六进制小数
[[:punct:]] #标点符号
[[:blank:]] #制表符和空格
[[:space:]] #空格
[[:cntrl:]] #所有控制符
[[:print:]] #所有可打印的字符
[[:graph:]] #除空格外所有可打印的字符
3.位置匹配
^ #匹配行首
$ #匹配行尾
4.字符转义
\
5.重复
* #重复0次或更多次
+ #重复一次或更多次
? #重复0次或一次
{n} #重复n次
{n,} #重复n次或更多次
{n,m} #重复不少于n次,不多于m次
6.子表达式
(or){2,} #匹配or重复两次或更多次的行,括号即为子表达式也称分组
7.反义
[^y] #匹配除了字母y的任何字符
8.分支
| #表示"或"
9.逆向引用
例:(<.>).?( )\1
(<.>) #匹配任意长度的单词,第一个子表达式
.? #匹配0个或1个标点符号
( ) #匹配0个或多个空格,第二个子表达式
\1 #指代第一个子表达式匹配到的模式,这就是逆向引用