1. 什么是正则表达式
正则表达式是用于描述字符排列和匹配模式的一种语法规则。
主要用于字符串的模式分割、匹配、查找 和 替换的操作。
2. 正则表达式与通配符
2.1 通配符:
-- * 匹配任意内容
-- ? 匹配任意一个内容
-- [] 匹配中括号中的一个字符
2.2 正则表达式与通配符:
- 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式(搜索字符串的命令能识别正则)。
[root@localhost sh]# grep "echo" process.sh
echo "$$ is current PID: $$"
echo "$! is the last PID in background: $!"
- 通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配(搜索文件的命令能识别通配符)。
[root@localhost sh]# find . -name "abc*"
./abc
./abcd
3. 基础正则表达式
tips:先在 .bashrc 下定义两个别名,然后 source .bashrc
3.1 星号 * :前一个字符匹配0次或任意多次
3.2 逗点 . :匹配除了换行符外任意一个字符
3.3 尖角 ^ :匹配行首,^ 写在前面
3.4 刀了 $ :匹配行尾,$ 写在后面
3.5 中括 [] :匹配中括号中指定的任意一个字符
3.6 中括内尖角 [^a-z] :匹配除a到z外的任意一个字符
3.7 转义符 :用于取消特殊符号的含义
3.8 重复符号 {n} :表示其前面的字符恰好出现n次
重复符号 {n,} :表示其前面的字符出现不小于n次
3.9 重复次数 {n,m} :匹配其前面的字符至少出现n次,最多出现m次
4. 案例
例1:匹配日期格式 YYYY-MM-DD
[ 0 - 9 ] { 4 } - [ 0 - 9 ] { 2 } - [ 0 - 9 ] { 2 }
例2:匹配IP地址
[ 0 - 9 ] {1 , 3 } . [ 0 - 9 ] { 1 , 3 } . [ 0 - 9 ] { 1 , 3 } . [ 0 - 9 ] { 1 , 3 }