Shell中的正则表达式基础及示例

正则表达式就是根据你定义的模式模板进行模式匹配的一种技术,由字面文本和具有特殊意义的符号组成。下面介绍下主要规则:
一、位置标记

  • ^,这个表示匹配字符串的开始位置
  • $,这个表示匹配字符串的结束位置

二、标识符

  • A字符,表示必须匹配A字符
  • . 这个点表示匹配任意一个字符,包括空字符,但有且只能必须匹配一个
  • [ ],中括号内可以是一个字符组或字符范围,[0-9]表示单个数字,[ab]表示匹配a或者b
  • [^],括号中的字符表示非,即不匹配括号中的任意一个字符

三、数量修饰符

  • ?,表示匹配一次或0次
  • +,表示匹配一次或多次
  • *,表示匹配0次或多次
  • {n},表示匹配n次
  • {n,},表示至少匹配n次
  • {n,m},表示最小匹配n次,最多匹配m次

四、其他

  • (),圆括号的内容视为一个整体,一般用在模式替换中
  • |,类似编程语言用的或运算,制定一种选择结构,可以匹配两边的任何一项
  • \,转义字符,如果字符串中包括上述的特殊字符,那么就需要这个符号来转义

示例一:匹配任意单词
分析:单词一般以空格开头,空格或者标点符号结尾,单词中包括大小写字母
表达式:

	( +[a-zA-Z]+[?.,]? +)

备注:第一个和最后一个+符号前面都有一个空格,表示匹配一个或多个空格。

示例二:匹配IP地址
分析:IP地址分为四组数字中间用“.”分开,数字最少一位,最多三位
表达式:

	[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}

备注:这里有个缺陷,一般的IP地址的取值范围再0到255之间,上面的表达式会匹配非法的字符

示例三:解析邮件地址
分析:username@hostname.com邮件地址一般类似与这个格式,其中username由字母、数字、下划线、点号、加号、破折号,hostname中包含字母、数字、点号、下划线,最后的定于域名只能是字母,长度一般是二到五位
表达式:

^([0-9a-zA-Z_\-\.\+]+)@([0-9a-zA-Z_\.]+)\.([a-zA-Z]{2,5})$

备注:^和$是锚字符,表示匹配的开始和结束的位置,其他的按照@和.分成三个部分就能很好理解这个表达式了

正则表达式的基本组成元素就是那些字符,关键就是如果根据自己的需求来组合这些基本元素,多看看多练练,不同的语言的表达式略微有差异,但是一些基本的锚字符,标识符,数量修饰符都一样,比如这里的[0-9]表示数字,[[:digit:]]也表示数字,JS中的正则表达式中“\d”表示数字。

菜鸟手书,欢迎指正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值