文章目录
正则表达式是什么
正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式
就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
好文链接:
https://www.cnblogs.com/dreamingbaobei/p/9717234.html
为什么要学习正则表达式
在企业中,我们每天做的linux运维工作中,时刻都会面对大量带有字符串的文本配置、程序、命令输出及日志文件等,而我们经常会有迫切的需要从大量的字符串内容中查找符合工作需要的特定字符串,这就要靠正则表达式,因此,可以说正则表达式就是为过滤这样字符串的需求而生的。
正则表达式处理数据过程
实际上正则表达式就是完成过滤工作,将不满足正则表达式定义的字符、数据拒绝掉。
正则表达式就像是一个漏斗。
基本的正则表达式元字符集合及其意义
shell赋予了它们超越字面的含义
* 重复前一个字符0次或多次
代表且只能代表任意一个字符(不包括空行)
* 重复前面任意0个或多个字符
.* 匹配所有字符。(包括空行)
sed -ri 's#(.*)#\1#g' bqh.txt
把前面正则匹配的括号内的结果,在后面用\1取出来操作。
^ 表示以什么开头,^bqh 以bqh开头
$ 是以什么结尾
^$ 表示空行。
\ 例\. 就只代表点本身,转义符号,让有着特殊身份移动的字符,脱掉马甲,还原原型\$
^.* 以任意多个字符开头。
.*$ 以任意多个字符结尾。
(.*) 从第一字符匹配,到空格停止,
[abc] 匹配字符集合内的任意一个字符【a-zA-Z】
[^abc] 匹配不包括^后的任意字符的内容;中括号里的^为取反,注意和以...开头区别。
a\{n,m\} 重复n到m次,前一个重复的字符。如果有用egrep/sed -r 可以去掉斜线。
\{n,\} 重复至少n次,前一个重复的字符。如果有用egrep/sed -r 可以去掉斜线。
\{n\} 重复n次,前一个重复的字符。如果有用egrep/sed -r 可以去掉斜线。
①^word 搜索以word开头的;vi ^ 一行的开够
②word$ 搜索以word结尾的;vi $ 一行的开头
③^$ 表示空行。
不同元字符的含义
"*"符号
"."符号
有点像通配里的“?"
"^"符号
"$"符号
"[]"符号
linux系统对大小写是敏感的
[^b-d] 表示匹配不在b-d范围内的所有字符,此时的^表示取反
[A-Za-z]* 表示匹配任意英文单词
"\"字符
"\<\>"符号
"\{\}"系列符号
[a-z] \{5\} 精确匹配5个小写字母