【shell】正则表达式:常见通配符、元字符与转义符

正则表达式常见通配符及元字符介绍
本文介绍了正则表达式,它是用某种模式匹配一类字符串的公式,由字符和元字符构成。详细阐述了常见通配符,包括匹配一个字符的点、问号等符号,匹配多个字符的星号、花括号等符号,还提及了元字符与转义符,并给出了参考链接。

一. 定义

正则表达式就是能用某种模式去匹配一类字符串的公式,它是由一串字符和元字符构成的字符串。所谓元字符,就是用以阐述字符表达式的内容、转换和描述各种操作信息的字符。

 

二. 常见通配符

1. 匹配一个

1.1 " . " 点符号

点符号用于匹配除换行符之外的任意一个字符。

[root@localhost ~]# grep 'r..t' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

 

1.2. " ? "符号:代表任意一个

当它作为通配符使用时,代表的是任意一个字符。
如果要列出以字母A开头、中间有一个字母的文件名、以.doc结尾的文件,就需要使用“?”了。

[root@localhost ~]# ls-l A?.doc

 

1.3. " $ "符号:匹配尾部

" $ “用于匹配尾部,比如说” abc$ "代表的是以abc结尾的行。

" ^$ ": 则代表该行为空,因为 ^ 和 $ 间什么都没有

# 以r开头,中间有一串任意字符,以h结尾的行
[root@localhost ~]# grep '^r.*h$' /etc/passwd
root:x:0:0:root:/root:/bin/bash

 

1.4. " [] "符号

用于匹配方括号内出现的任一字符

A、B、C、D选项中的任意一种,用正则表达式表示就是[ABCD]
要匹配任意一个大写字母,就需要使用“-”号做范围限定,写成[A-Z],要匹配所有字母则写成[A-Za-z]。

匹配手机号:“^1[38][0-9]{9}”

 

1.5. " ^ “符号和” ! "符号

  1. 当出现在“[]”中的时候,代表取反。[^A](或[!A])代表不是A。
  1. 用于匹配开头。比如说“^root”匹配的是以字母root开始的行。
[root@localhost ~]# grep '^root' 
/etc/passwdroot:x:0:0:root:/root:/bin/bash

 

2. 匹配多个

2.1. " * "符号

代表0个或多个字符。比如*.doc指所有以.doc结尾的文件。

”号经常和“.”符号加在一起使用。比如“.”代表任意长度的不包含换行的字符。

[root@localhost ~]# grep 'r*t' /etc/passwd
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
。。。。

 

2.2. " {n,m} "符号

" * "不能精确地控制匹配的重复次数,但使用“{n,m}”符号则能更加灵活地控制字符的重复次数.

 

2.3. " {} "符号

匹配所有括号内包含的以逗号隔开的字符。

例如,下面列出了所有以字母A、B、C开头,以.doc结尾的文件:

#第一种方法:用“{}[root@localhost ~]# ls -l {A,B,C}.doc
#第二种方法:用“[][root@localhost ~]# ls -l [A-C].doc
#以上两种方法都能满足题意,但是如果要列出以字母AB或者CD开头、以.doc结尾的文件,就只能用“{}”了。
[root@localhost ~]# ls -l {[A-Z]*.doc,[0-9]??.txt}

 

三、元字符 与转义符

在这里插入图片描述

 

在这里插入图片描述

 
 

参考:
https://www.cnblogs.com/chengmo/archive/2010/10/17/1853344.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

roman_日积跬步-终至千里

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

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

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

打赏作者

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

抵扣说明:

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

余额充值