引文
*正则表达式(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 //过滤文件中的空白行与#开头的行
小结
正则表达式是一种功能强大的文本处理工具,通过灵活组合各种元字符和函数,可以实现复杂的文本搜索、匹配和替换操作。掌握正则表达式对于提高编程效率和文本处理能力具有重要意义。