. 匹配随意字符
对字符转义
| 选择操作(或)
^ 行起始字符
$ 行终止
?
匹配0个或1个的量词
* 匹配0个或多个的量词
+ 匹配一次或多次的量词 grep要转义
[ 字符组開始
] 字符组结束
{ 量词或代码的開始
} 量词或代码的结束
( 分组開始
) 分组结束
反斜杠后面加大写字符为小写字符的取反,比方为单词边界,B为非单词边界
单词边界 grep里要加引號
[] 退格符
cx 控制字符
d 数字
dxxx 字符的十进制
oxxx 字符的八进制
x xx 字符的十六进制
f 换页
回车
换行
s 空白符
水平制表符
w 单词字符
空字符
(?
d) Unix中的行
(?i) 不区分大写和小写
(?
J) 同意反复的名字
(?m) 多行
(?s) 单行
(?u) Unicode
(?U) 默认最短匹配
(?x) 忽略空格和凝视
(?-...) 撤销设置或关闭选项
(d)d1
第一个为分组,表示匹配第一个数字并将其捕获
1表示对捕获的数字进行反向引用。
7+ 等同于 7{1,}
7* 等同于 7{0,}
7? 等同于 7{0,1}
懒惰量词:假设你想匹配最少而不是最多数目的字符,能够使用懒惰量词
?? 懒惰匹配0或1次 (事实上就是0次)
+? 懒惰匹配1或多次 (事实上就是1次)
*? 懒惰匹配0或1次 (事实上就是0次)
{n}? 懒惰匹配n次 (事实上就是n次)
{n,}? 懒惰匹配n或n次以上 (事实上就是n次)
{m,n}?
懒惰匹配m到n次 (事实上就是m次)
占有量词:匹配尽量多的。同懒惰量词相反。没有回溯,可能导致找不到匹配。由于一下次选定了全部输入,不再回头。
?+
++
*+
{n}+
{n,}+
{m,n}+
前瞻:
ancyent(?
=marinere)
寻找每一行后面跟marinere的单词ancyent
反前瞻:
ancyent(?!marinere)
寻找每一行前面跟marinere的单词ancyent
參考:《学习正則表達式》