今天是我陪你做实验的第36天
今 日 实 验
{正则表达式的字符类}
字符类能匹配特定的字符集,通过方括号把一列字符或一个范围的字符括在一起。
开始实验
创建实验文件lab02
最后一行是a按tab键后b
查询:lab02文件
所有a打头b结尾
中间任意空格的这些行
敲:grep 'a*b' lab02
用下面这条命令也能实现
敲:grep 'a[[:space:]]*b' lab02
其中[[:space:]]这一部分
叫做“字符类”
划重点:
Posix除了定义操作系统
应该为
应用程序提供哪些接口
还定义了一些
只能在正则表达式中
使用的“字符类”
我收集了一下字符类
下面敲实验
验证它们的实际效果与用法
先写个字符串
.,.,?.!123abcABC abcA123..?1 2
包含了标点符号
数字小写字母大写字母空格
验:出现标点符号
最少4次,最多8次
敲:echo '.,.,?.!123abcABC abcA123..?1 2' | grep '[[:punct:]]\' --color=auto
验:上面基础上
后面是数字的
数字最少是1个
最多是3个
加[[:digit]]\
敲:echo '.,.,?.!123abcABC abcA123..?1 2' | grep '[[:punct:]]\[[:digit]]\' --color=auto
验:上面基础上
后面是小写字母的
出现几次都行
加[[:lower:]]*
敲:echo '.,.,?.!123abcABC abcA123..?1 2' | grep '[[:punct:]]\[[:digit]]\[[:lower:]]*' --color=auto
验:上面基础上
后面是大写字母的
出现几次都行
加[[:upper:]]*
敲:echo '.,.,?.!123abcABC abcA123..?1 2' | grep '[[:punct:]]\[[:digit]]\[[:lower:]]*[[:upper:]]*' --color=auto
验:上面基础上
后面是空格的
出现几次都行
加[[:space:]]*
敲:echo '.,.,?.!123abcABC abcA123..?1 2' | grep '[[:punct:]]\[[:digit]]\[[:lower:]]*[[:upper:]]*[[:space:]]*' --color=auto
验:上面基础上
显示到红色字体处
.,.,?.!123abcABC abcA123..?12
可以发现在上面基础上
又多了小写字母
大写字母、数字、标点等
使用[[:graph:]]*字符类
只要没有空格它全匹配
敲:echo '.,.,?.!123abcABC abcA123..?1 2' | grep '[[:punct:]]\[[:digit]]\[[:lower:]]*[[:upper:]]*[[:space:]]*[[:graph:]]*' --color=auto
以上就是对字符类的演示。
领取专属 10元无门槛券
私享最新 技术干货