Linux 正则表达式与元字符

本文介绍了Linux中的正则表达式和元字符,包括基础元字符如*、.、^、$等,以及扩展元字符如+、?、|和()。通过实例解析了如何使用正则表达式进行字符串匹配,适用于grep、sed、awk等命令。同时,文章列举了多个正则表达式示例,帮助读者巩固理解。
摘要由CSDN通过智能技术生成

今天继续给大家介绍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

Linux正则表达式使用元字符来匹配字符串。元字符是构成正则表达式的基本元素,可以用来查找符合要求的字符串。在Linux中,常见的元字符有以下几种: 1. `.` : 匹配任意一个字符,除了换行符。 2. `*` : 匹配前面的字符零次或多次。 3. `^` : 匹配字符串的开头。 4. `$` : 匹配字符串的结尾。 5. `[]` : 匹配方括号内的任意一个字符。 6. `|` : 匹配两个或多个模式中的任意一个。 7. `\` : 转义字符,用于匹配特殊字符,例如`\.`可以匹配点号本身。 8. `{}` : 匹配前面的字符指定的次数,例如`[0-9]{2,4}`可以匹配2到4个数字。 9. `()` : 用于分组,可以改变匹配的优先级。 这些元字符可以组合搭配使用,构造出更复杂的正则表达式,以匹配我们想要查找的字符串。在使用grep命令时,可以通过-E参数启用扩展正则表达式,使得最后三种元字符不需要在大括号前面添加转义符号。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Linux 正则表达式元字符](https://blog.csdn.net/weixin_40228200/article/details/120822574)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远是少年啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值