Bootstrap

正则表达式Ⅰ

正则表达式

1.概念

正则表达式,又称规则表达式。(英语:Regular Expression),在代码中常简写为 regex、regexp 或 RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
正则表达式不只有一种,而且 LINUX 中不同的程序可能会使用不同的正则表达式,如:工具:grep sed awk egrep

正则表达式—通常用于判断语句中,用来检查某一字符串是否满足某一格式
正则表达式是由普通字符与元字符组成
普通字符包括大小写字母、数字、标点符号及一些其他符号
元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式

LINUX 中常用的有两种正则表达式引擎
基础正则表达式:BRE
扩展正则表达式:ERE

2.基础正则表达式常见元字符

\:         转义符,将特殊字符进行转义
^:         匹配行首,^则是匹配字符串的开始^tux匹配以tux开头的行
$:         匹配行尾,$则是匹配字符串的结尾tux$匹配以tux结尾的行 
.:         匹配除换行符\r\n之外的任意单个字符
[list]:    匹配list列表中的一个字符
[^list]:   匹配任意不在list列表中的一个字符
*:         匹配前面子表达式0次或者多次
\{n\}:     匹配前面的子表达式n次
\{n,\}:    匹配前面的子表达式不少于n次
\{n,m\}:   匹配前面的子表达式n到m次
注: egrep、awk使用{n}、{n, }、{n, m}匹配时“{}"前不用加"\”
egrep -E -n 'wo{2}d' test.txt   //-E 用于显示文件中符合条件的字符
egrep -E -n 'wo{2,3}d' test.txt

定位符
^ 匹配输入字符串开始的位置
$ 匹配输入字符串结尾的位置

非打印字符
\n 匹配一个换行符
\r 匹配一个回车符
\t 匹配一个制表符

3. grep命令

-E :开启扩展(Extend)的正则表达式
-w :表示精确匹配
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-o :只显示被模式匹配到的字符串
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行(反向查找,输出与查找条件不相符的行)
--color=auto :可以将找到的关键词部分加上颜色的显示
-n :顺便输出行号

4.扩展正则表达式 egrep

通常情况下会使用基础正则表达式就已经足够了,但有时为了简化整个指令,需要使用范围更广的扩展正则表达式

例如,使用基础正则表达式查询除文件中空白行与行首为 “#” 之外的行(通常用于查看生效的配置文件),执行"grep -v’^KaTeX parse error: Expected group after '^' at position 21: ….txt | grep -v'^̲#'"即可实现。这里需要使用管…|^#'test.txt",其中,单引号内的管道符号表示或者(or)

egrep 命令与 grep 命令的用法基本相似。egrep 命令是一个搜索文件获得模式,使用该命令可以搜索文件中的任意字符串和符号,也可以搜索一个或多个文件的字符串,一个提示符可以是单个字符、一个字符串、一个字或一个句子。

与基础正则表达式类型相同,扩展正则表达式也包含多个元字符,常见的扩展正则表达式的元字符主要包括以下几个

+   作用:重复一个或者一个以上的前一个字符
示例:执行"egrep -n 'wo+d' test.txt"命令,即可查询"wood" "woood" "woooooood"等字符串

?   作用:零个或者一个的前一个字符
示例:执行"egrep -n 'bes?t' test.txt"命令,即可查询"bet""best"这两个字符串

|   作用&
;