本文共 1520 字,大约阅读时间需要 5 分钟。
基本语法
1)行的起始和结束
**脱字符号^** : 代表一行的开始 **美元符号$** : 代表一行的结束exp: ^cat: 以cat开头的行 cat$:以cat结束的行 ^$:空行
注意: 匹配的是一个位置 而不是具体的文本
2)字符组
字符组[…]: 列出在某处希望匹配的字符 或的意思exp: [Ss]mith 匹配Smith或者smith匹配 ...
字符组元字符 - 表示一个范围
exp: [0123456789] = [0-9] 二十六个字符 = [A-Za-z]
注意 只有在字符组内部连字符才是元字符 否则就只能匹配一个普通的字符符号而不是一个范围
排除型字符组[^…]: 匹配任何未列出的字符
exp: [^1-6]:匹配除了1-6之外的任何字符 q[^u]:匹配字母q后面不是u的英文单词
注意:排除型字符组表示‘匹配一个未列出的字符’ 而不是不要匹配列出的字符 如上面例子中的q[^u]就无法匹配 Iraq(q后面没有字符【手动忽略换行符】)和Qantas(Q为大写)
3)用点号匹配任意字符
点号 . : 用来匹配任意字符的字符组的简便写法
exp: 需要搜索 16/11/19、16.11.19、16-11-19 可以使用16[-./]11[-/.]19 也可以尝试用 16.11.19 (不精确)注意:如果写成了[.-/]的话 由于-连字符出现在字符组内且不在字符组开头 所有表示的是范围 并不匹配
4)多选结构
**或|**:同时匹配其中的一个正则表达式exp: gray|grey = gr(a|e)y 用括号来划定多选结构的范围 注意: gr[a|e]y 并不符合要求 原因是出现在字符组中的元符号都只是简单的表示这个普通符号不具有特殊意义 而括号()在正常情况下是元符号 gr[ae]y和gr(a|e)y 的区别:一个字符组只能匹配目标文本中的单个字符,而多选结构|自身可能就是一个正则表达式
5)忽略大小写
**不区分大小写 -i **
6)单词分界符
**元字符序列 \< and \>**
元字符 | 名称 | 匹配对象 |
---|---|---|
. | 点号 | 单个任意字符 |
[…] | 字符组 | 列出的任意字符 |
[^…] | 排除型字符组 | 未列出的任意字符 |
^ | 脱字符 | 行的起始位置 |
$ | 美元字符 | 行的结束位置 |
\< | 反斜线小于 | 单词的起始位置(某些版本的egrep可能不支持) |
> | 反斜线大于 | 单词的结束位置(某些版本的egrep可能不支持) |
| | 竖线 | 匹配分割两边的任意一个表达式 |
(…) | 括号 | 限制竖线的作用范围 |
注意:
1. 字符组外 点号是元符号字符组内 连符号是元符号
脱字符在外部表示开启位置 在内部表示排除的意思
7)可选项元素
**问号?**: 容许这个字符出现或者不出现**加号 + **: 容许之前紧邻的元素出现一次或多次**星号 * ** : 容许之前紧邻的元素出现任意多次或者不出现exp: 匹配color和colour : colou?r 匹配
符号 | 次数 | 含义 |
---|---|---|
? | 0/1 | 单次可选 |
+ | 1~n | 任意次数可选 |
* | 0~n | 至少一次 |
8)规定次数范围
区间两次{min,max}: 出现次数在min到max之间
9)括号及反向引用
在一个表达式中使用多个括号,其中的子表达式可以用\1,\2,\3来表示
10)转义符号
转义符号\ 匹配元字符对于的普通字符
转载地址:http://qpqli.baihongyu.com/