十一 正则表达式

Regular Express:正则表达式

  使用"一串符号"来描述有共同属性的数据

grep命令行简介

类型         注释
grep     标准grep命令,支持基本正则表达式
egrep    扩展grep命令,支持基本和扩展正则表达式
fgrep    快速grep命令,不支持正则表达式,按照字符串的字面意思进行匹配

grep处理数据顺序

以行为处理单位
对数据进行逐行处理,处理完当前行自动处理下一行,自动处理完所有的行为
默认输出有与正则表达式匹配数据的行,到屏幕上
不加选项,按默认方式处理数据
处理完当前行后,自动处理下一行,直到末行

egrep文本过滤

egrep  [选项] '正则表达式' 文件
前置命令 | egrep [选项] '正则表达式'
egrep等于 grep -E。表示允许使用扩展的正则表达式

常用的命令选项:

参数选项    注释
-i      忽略字母大小写
-v      条件取反
-c      统计匹配的行数
-q      静默、无任何输出,一般用于检测;看$?返回值,如果为0,说明有匹配,否则无匹配
-n      显示出匹配结果所在的行数
--color  标红显示匹配字串

基本元字符

类型          含义        举例        说明
^          匹配行首        ^abc      以abc开头
                    ^#        以#号开头的行(比如注释行)
$          匹配行尾        abc$      以abc结尾的行
                    ^$        空行
.           匹配单个字符       .       除换行符(\n)以外的任意单个字符
?         最多匹配一次        
*    匹配前面一个普通字符的任意次数    a*      0个或多个连续的a
                       (abc)*    0个或多个连续的abc
                        .*     任意长度的任意字符串
+        最少匹配一次         a+     一个或多个连续的a
                       (abc)+    一个或多个连续的abc

元字符{}:限定表达式的匹配次数

类型      含义        示例        说明
{n}      匹配n次      (ab){3}      匹配ababab
{n,m}     匹配n-m次      (ab){1,3}     匹配ab、abab、ababab
{n,}      匹配至少n次     (ab){2}       匹配2个及以上连续的ab

元字符[]

匹配字符集合
[]内加^可取反;"^"符号表示匹配行首,但是“^”符号放到"[]"符号中就不再是匹配行首,而是表示取反

示例

说明

[acl45_?]

匹配a、c、l、4、5、_、?

[a-z]

匹配任意小写字母

[A-Z]

匹配任意大写字母

[0-9]

匹配任意数字

[a-Z0-9]

匹配任意字母或数字

[^A-Z]

匹配包括非大写字母的行

^[^a-z]

匹配不以小写字母开头的行

[m~n]

匹配m和n

[:space:]

空白字符

[:punct:]

标点符号

[:lower:]

小写字母

[:upper:]

大写字母

[:alpha:]

大小写字母

[:digit:]

数字

[:alnum:]

数字和大小写字母

其他元字符

类型    含义      示例      说明
()    组合为整体    ab{3}     匹配ab、abb、abbb
              (ab){3}    匹配ab、abab、ababab
|      或者      root|bin  匹配root、bin
\b    单词边界    \broot\b    匹配单词root,不匹配keroot、rooty等字符串
\<    单词的开头    \<th    匹配以th开头的单词
\>    单词的结束    \<root\>    作用与\broot\b相同

\为转义符号,可以为一些普通字符赋予特殊含义,或者将一些特殊字符变为普通字符

\<\>:精确匹配符号,该符号利用"\"符号屏蔽"<>"符号,如\<the\>表示精确匹配the这个单词,而不匹配the字符的单词

()通常和|符号结合使用,表示一组可选字符的集合

猜你喜欢

转载自www.cnblogs.com/zhongguiyao/p/8984920.html