正则表达式详解

正则表达式是一个指定文本模式的标准Unix语法,是由一串字符和元字符构成的字符串,简称RE
正则表达式又分为基本正则和扩展正则,基本正则和Unix兼容,而扩展正则表达式增加了一些新的元字符。

grep: 通用正则表达式分析程序。
用途:使用正则表达式搜索文本,并把匹配的行打印出来。
格式: grep [选项]…模式 目标文件
-v:反转查找,输出与模式不相符的行
-An:同时显示符合条件行的下面n行
-Bn:同时显示符合条件行的上面n行
-Cn:同时显示符合条件行的上面和下面n行
-E: 支持扩展正则表达式
-o: 仅显示匹配模式的字符串
-f: 根据文件内容进行匹配
grep:可以使用基本正则表达式搜索
egrep:可以使用基本和扩展正则表达式搜索,相当于grep -E

正则表达式由以下元素构成:
普通字符,通配符,修饰符,锚点等。

普通字符 比如1,2,a,b 等
通配符
.”:表示一定有一个任意字符 eg:a**…**b 表示a和b之间一定有3个字符。
方括号表达式:一个文字字符域。eg: [abc] , [0-9] , [a-z] 等
域表达式和字符类:
[:alnum:]------字母数字混排
[:digit:]-------数字
[:lower:]-------小写字母
[:upper:]--------大写字母
[:space:] ------空白字符,空格、TAB、换行符等
通用修饰符
“?”:表示0个或者1个前面的字符(扩展)
eg:ab?c表示a,c之间最多有一个b,可以匹配ac或abc

“*”:表示0个或者多个前面的字符
eg:ab*c可以匹配ac或abc或abbbbbbbc等
“+”:表示1个或者多个前面的字符(扩展)
eg:ab+c表示至少要有一个b ,不能匹配ac,
{n}:表示n个前面的字符
eg:ab{2}c表示abbc
{n,m}:表示n个到m个前面的字符
eg:ab{2,4}c表示abbc,abbbc,abbbbc。
锚点搜索
“^”:以什么开头
“$”:以什么结束

^$”表示空行

eg:^hello$表示一行只有hello。

\<:表示词首部
\>:表示词尾部

\<abc>\:表示abc这个单词

[root@rhel1 ~]# echo "abc,123" | grep "\<abc\>"
abc,123
[root@rhel1 ~]# echo "abc,123" | grep --color "\<abc\>"
abc,123

.*: 表示任意数量任意字符。

正则表达式扩展出来的一些元字符:
? :匹配0个或1个在其之前的那个普通字符
+:匹配1个或多个在其之前的那个普通字符
():表示一个字符集合
|:表示”或“意义,匹配一组可选的字符

“?”、”*”、”+”默认只能修饰前面一个字符
利用圆括号()可以实现多个字符分组
在圆括号中利用”|”实现或者的功能
eg:(oo|ee){2}表示oo oo 或ee ee
注意:正则表达式要放在引号里

eg:
显示文件中的所有A类地址:

egrep --color  ‘^([1-9]|[1-9][0-9]|1[01][0-9]|12[0-6])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$ '  file

显示文件中的所有B类地址:

egrep --color ' ^(12[89]|1[3-8][0-9]|19[01])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$ '  file

显示文件中的所有C类地址:

egrep --color ' ^(19[2-9]|2[01][0-9]|22[0-3])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$’  file
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值