正则表达式
正则表达式是定义的模式模板(pattern template),即用一组符号来描述具有共同属性的数据,Linux工具(grep、sed、awk)可以利用它来过滤文本。
正则表达式模式利用通配符来描述数据流中的一个或多个字符。
正则表达式使用过正则表达式引擎实现的,正则表达式引擎是一套底层软件,负责解释正则表达式模式并使用这些模式进行文本匹配。
在 Linux 中有两种流行的正则表达式引擎
1. POSIX 基础正则表达式引擎 (basic regular expression, BRE)
2. POSIX 扩展正则表达式引擎 (extended regular expression, ERE)
正则表达式区分大小写
\b 单词边界 \broot\b 匹配 root 单词
\< 单词开头 \<th 匹配以 th 开头的单词
\> 单词结尾 \>er 匹配以 er 结尾的单词
^ 行首锚定符
$ 行尾锚定符
. 用来匹配除换行符(\n)之外的任意单个字符
* 字符后面放置,表明其前面的字符必须在匹配模式的文本中出现任意次数,0次或多次 。在 Linux 中,代表零个或多个字符
? 字符后面放置,表明其前面的字符必须在匹配模式的文本中出现至多1次,0次或1次。在 Linux 中,代表一个字符
+ 字符后面放置,表明其前面的字符必须在匹配模式的文本中出现至少1次,1次或多次
{m} 表明前面的正则表达式准确出现 m 次
{m,n} 表明前面的正则表达式至少出现 m 次,至多出现 n 次
[] 用来定义一个字符组,方括号中包含所有希望出现在该字符组中的单个字符
[ - ] 区间字符组
[^] 排除型字符组
| 逻辑或
() 对表达式进行分组