Shell 正则表达式

举报
小工匠 发表于 2021/09/10 23:12:50 2021/09/10
【摘要】 什么是正则表达式 正则表达式是用于描述字符排列和匹配模式的一种语法规则。 它主要用于字符串的模式分割、匹配、查找以及替换操作。 概念看看就行,为了保证博文的完整性,记录下,其实没太大用…. 正...

什么是正则表达式

正则表达式是用于描述字符排列和匹配模式的一种语法规则。
它主要用于字符串的模式分割、匹配、查找以及替换操作。

概念看看就行,为了保证博文的完整性,记录下,其实没太大用….


正则表达式的分类

1.基本的正则表达式(Basic Regular Expression 又叫Basic RegEx 简称BREs)
2.扩展的正则表达式(Extended Regular Expression 又叫Extended RegEx 简称EREs)
3.Perl的正则表达式(Perl Regular Expression 又叫Perl RegEx 简称PREs)


基本组成部分

正则表达式的基本组成部分。
这里写图片描述


POSIX字符类

POSIX字符类是一个形如[:…:]的特殊元序列(meta sequence),他可以用于匹配特定的字符范围。

这里写图片描述

元字符

元字符(meta character)是一种Perl风格的正则表达式,只有一部分文本处理工具支持它,并不是所有的文本处理工具都支持。

这里写图片描述

正则表达式与通配符

正则表达式

正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配grep,awk,sed等命令可以支持正则表达式。

通配符用来匹配符号条件的文件名,通配符是完全匹配

ls,find,cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配。

通配符

  • * 代表匹配任意内容
  • ? 代表匹配任意一个内容
  • [] 代表中括号中一个字符
    这里写图片描述

基础正则表达式概述

常见元字符

这里写图片描述

  • * 前一个字符匹配0次或任意多次
  • . 匹配除了换行符外任意一个字符

  • ^ 匹配行首 例如 ^hello 会匹配以hello开头的行

  • $ 匹配行尾 例如 hello$ 会匹配以hello结尾的行
  • [] 匹配中括号中指定的任意一个字符,只匹配一个字符。[0-9]匹配任意一位数字
  • [^] 匹配除中括号的字符以外的任意一个字符。 例如 [^0-9]匹配任意一位非数字字符
  • [^a-z]表示任意一位非小写字母
  • \ 转义符 用于取消将特殊符号的含义取消
  • \{n\} 表示其前面的字符恰好出现N次 例如 [0-9]{4} 匹配4位数字
    [1][3-8][0-9]\{9\} 匹配手机号码
  • \{n,\} 表示其前面的字符出现不小于n次。 例如 [0-9]{2,} 表示两位及以上的数字
  • \{n,m\} 表示其前面的字符至少出现n次,最多出现m次。
    例如 [a-z]{6,8} 匹配6到8位的小写字母

元字符 *

这里写图片描述

这里写图片描述


元字符 .

这里写图片描述

符号: .

grep "s..d" test.txt 表示匹配s和d之间含有2个任意字符(除换行符)行,有多少个点就多少个字符
grep "s.*d" test.txt 表示匹配s和d之间含有任意内容的行
  
 
  • 1
  • 2

元字符 ^

这里写图片描述

符号^代表匹配行首,符号$代表匹配行尾

grep "^s" test.txt 匹配以s开头的行
grep "b$" test.txt 匹配以b结尾的行
grep "^$" test.txt 匹配空白行
grep -n  在结果中增加行号
  
 
  • 1
  • 2
  • 3
  • 4

元字符 []

这里写图片描述

符号[ ]的作用与通配符中的[ ]一致

grep "[0-9]" test.txt 匹配包含有数字的全部行

注意:^用在[ ]内代表取反
grep "[^0-9]" test.txt 匹配包含字母的全部行

匹配所有字母: [a-zA-z]
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

元字符 [^]

这里写图片描述

"^"匹配行首,"$"匹配行尾
"^M" 匹配以大写“M”开头的行
"n$" 匹配以小写“n”结尾的行
"^$" 会匹配空白行
  
 
  • 1
  • 2
  • 3
  • 4

元字符 \

这里写图片描述


元字符 \{n\}

这里写图片描述

这里写图片描述

"\{n\}"表示其前面的字符恰好出现n次
  
 
  • 1

元字符 \{n,\}

这里写图片描述

"\{n,\}"表示其前面的字符出现n次以上
  
 
  • 1
"^[0-9]\{3\}[a-z]"以数字开头,且三个以上字母的行
  
 
  • 1

元字符 \{n,m\}

这里写图片描述


正则表达式案例

grep日期 yyyy-mm-dd

grep日期 yyyy-mm-dd[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}

  
 
  • 1
  • 2

grep IP地址

grep IP地址:
ifconfig|grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"
inet 192.168.0.104 netmask 255.255.255.0 broadcast 192.168.0.255
  
 
  • 1
  • 2
  • 3

文章来源: artisan.blog.csdn.net,作者:小小工匠,版权归原作者所有,如需转载,请联系作者。

原文链接:artisan.blog.csdn.net/article/details/52462501

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。