Shell 编程之正则表达式

引文

*正则表达式(Regular Expression,简称Regex或RE)*是一种文本模式描述的方法,用于字符串的搜索、匹配、查找、替换等操作。它由一系列特殊字符和普通字符组成,这些特殊字符被称为“元字符”,它们赋予了正则表达式强大的文本处理能力。

1.定义

:正则表达式是一种文本模式,用于匹配字符串中符合特定规则的子串。

2.用途

:主要用于字符串的搜索、替换、验证等操作,广泛应用于文本编辑器、编程语言(如Python、Java、JavaScript等)、数据库查询等领域。

正则表达式

1.基础正则表达式

\	转义字符,取消特殊符号的含义
^	匹配字符串的开始位置,如:^word匹配以word开头的行
$	匹配字符串的结束位置,如:word$匹配以word结尾的行
.	匹配除 \n (换行)之外的任意一个字符
*	匹配前面的子表达式0次或者多次
[list]	匹配list列表中的一个字符,如:[0-9] 匹配任一位数字
[^list]	匹配不在list列表中的一个字符,如:[^0-9] 匹配任意一位非数字字符 
\{n\}  	匹配前面的子表达式n次,如:[0-9]\{2\} 匹配两位数字
\{n,\}	匹配前面的字表达式不少于n次,如:[0-9]\{2,\} 表示两位及两位以上数字
\{n,m\}	匹配前面的字表达式n到m次,如:[a-z]\{2,3\} 匹配两到三位的小写字母

2.扩展正则表达式

+	匹配前面的子表达式1次以上,如:go+d,将匹配至少一个o
?	匹配前面的字表达式0次或者1次,如:go?d,将匹配gd或god
()() 号中的字符串作为一个整体,如:(xyz)+,将匹配xyz整体1次以上
|	以或的方式匹配字符串,如:good|great,将匹配good或者great

基础实例

1.基础正则表达式示例

例:grep为例

grep  root  /etc/passwd				//筛选文件中包含root的行

grep  ^root  /etc/passwd				//筛选以root开头的行

grep  bash$  /etc/passwd				//筛选以bash结尾的行

grep  -v  root  /etc/passwd			//筛选文中不包含root的行

grep  'r..d'  /etc/passwd				//筛选出r 和d 之间有两个字符的行

grep  '[^s]bin'  /etc/passwd			//筛选bin前面不是s的行

grep  '^$'  /etc/passwd				//筛选出空白行

grep  't[es]'  /etc/passwd				//筛选包含字符串te或ts的行

grep  '0\{1,\}'  /etc/passwd				//筛选数字0出现1次或1次以上的行

grep  -e  'ntp'  -e  'root'  /etc/passwd			// -e参数查找多个模式

grep  [0-3]  /etc/passwd				//筛选包含数字0-3的行

grep  '[^a-z]ae'  /etc/passwd			//筛选ae前面不是小写字母的行

grep  '^[a-z]ae'  /etc/passwd			//筛选ae前面是小写字母的行

2.基础扩展正则表达式示例

例:egrep为例

egrep  0+  /etc/passwd				//匹配至少包含一个0的行

egrep  '(root|ntp)'  /etc/passwd			//匹配包含root或ntp的行

egrep  ro?t  /etc/passwd				//匹配rt或者rot的行

egrep  -v  '^$|^#'  /etc/passwd			//过滤文件中的空白行与#开头的行

小结

正则表达式是一种功能强大的文本处理工具,通过灵活组合各种元字符和函数,可以实现复杂的文本搜索、匹配和替换操作。掌握正则表达式对于提高编程效率和文本处理能力具有重要意义。

  • 17
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值