zl程序教程

您现在的位置是:首页 >  系统

当前栏目

Linux 正则表达式与元字符

2023-09-14 09:01:46 时间

今天继续给大家介绍Linux基础知识,本文主要内容是Linux的正则表达式和元字符。
正则表达式是一种匹配字符串的表达方式,而元字符就是构成正则表达式的基本元素,在Linux中,我们需要经常使用正则表达式来查找配置文件中指定的内容,或者对其进行快速替换。其实,不仅仅在Linux中,正则表达式在各种编程语言中是基本通用的,本质上就是用来查找符合要求字符串的工具,例如在爬虫的编写中,为了爬取指定的感兴趣的内容,也需要大量使用正则表达式。

一、Linux基础元字符

学习正则表达式首先要学习元字符,在Linux中,容易与元字符混淆的是通配符的概念,这两者作用大概类似,内容上大有不同,在使用上基本上大部分命令都支持通配符的概念,如果没有特殊说明,只有Linux四剑客(grep、sed、awk)等命令支持元字符,此外,元字符还可以细分为基础元字符和下文要讲的扩展元字符,有的命令只支持基础元字符,而有的命令既支持基础元字符,又支持扩展元字符。
在Linux中,有以下基础元字符:

元字符作用
*前面的字符匹配任意次
.匹配除换行符以外的字符一次
^匹配行首
&匹配行尾
^&匹配空白行
[]匹配括号中的任意一个字符
[^]^表示取反,表示匹配括号内字符以外的任意一个字符
\转义符,用于取消特殊字符的功效
\ {N}N是一个正整数,这些作为一个整体,表示前面的字符恰好出现N次
{N,}N是一个正整数,这些作为一个整体,表示前面的字符恰好出现N次以上
\ {N,M}N、M是一个正整数,这些作为一个整体,表示前面的字符出现的次数在N次到M次之间

注意,最后三种元字符在配合grep的-E参数使用时,不需要在大括号前面添加转义符号。

二、Linux扩展元字符

在Linux中,扩展元字符有以下四种:

扩展元字符作用
+表示前面一个字符匹配1次或者多次
?表示前面一个字符匹配1次或者0次
|逻辑或,表示匹配前面或后面都可以
()将小括号内的字符作为一个整体来看待,小括号经常与逻辑或连用,用于限定逻辑或的范围

三、Linux正则表达式

在了解了元字符之后,我们就可以使用元字符进行组合搭配,进而构造Linux正则表达式,从而匹配我们想要查找的字符串了。
接下来,给大家列举几个常见的Linux正则表达式,大家可以借助这些表达式来联系自己对元字符和正则表达式的理解情况。

aaa*
g..d
g.*d
^M
\.&
[ab][cd]
abc|def
a(bc)|(cd)e
[a-z]\{5\}
[0-9]\{2,4\}
^[^a-z]
[0-9]\{1,3\}\.)\{3\}([0-9]\{1,3\}

上述正则表达式含义依次如下:
1、匹配aa、aaa、aaaa……
2、匹配开头为g,结尾为d的字符串,他们中间可以存在2个任意字符
3、匹配开头为g,结尾为d的字符串,他们中间可以存在任意数量的任意字符
4、匹配以M为开头的行
5、匹配以点(.)结尾的列
6、匹配ac或ad或bc或bd
7、匹配abcef或abdef
8、匹配abce或acde
9、匹配由5个小写字母组成的字符串
10、匹配由2-4个数字组成的字符串
11、匹配开头不是小写字母的行
12、匹配IP地址格式
注意:最后一个正则表达式会匹配诸如333.333.333.333这样的IP地址,因此还需要后续对这样的IP地址进行过滤,过滤方法是将大于255的IP地址过滤掉
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200