今天小编给大家分享一下Linux的正则表达式实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

元字符通常在Linux中分为两类:Shell元字符,由Linux Shell进行解析; 正则表达式元字符,由vi/grep/sed/awk等文本处理工具进行解析; 正则表达式一般以文本行进行处理,在进行下面实例之前,先为grep命令设置–color参数:

class="">$aliasgrep='grep--color=auto'

这样每次过滤出来的字符串都会带色彩了。

在开始之前还需要做一件事情,就是创建一个测试用的re-file文件,内容如下:

class="">$catre-fileIhadalovelytimeonourlittlepicnic.Loverswereallaroundus.Itisspringtime.Ohlove,howmuchIadoreyou.Doyouknowtheextentofmylove?Oh,bytheway,IthinkIlostmyglovessomewhereoutinthatfieldofclover.Didyouseethem?Icanonlyhopelove.isforever.Iliveforyou.It'shardtogetbackinthegroove.class="">$catlinux.txtLinuxisagoodgodassdxwbcvnbvbjkgreattttttwexcvxcoperaaaatingdhfghfvxgooodfsawrerdxxhklgdsystemawxxxxgladgood正则表达式元字符

特殊的元字符
扩展的正则表达式
教你3分钟搞定Linux正则表达式教你3分钟搞定Linux正则表达式
实操

匹配以love开头的所有行

class="">$grep'^love're-filelove,howmuchIadoreyou.Doyouknow

匹配love结尾的所有行

class="">$grep'love$'re-fileclover.Didyouseethem?Icanonlyhopelove.

匹配以l开头,中间包含两个字符,结尾是e的所有行

class="">$grep'l..e're-fileIhadalovelytimeonourlittlepicnic.love,howmuchIadoreyou.Doyouknowtheextentofmylove?Oh,bytheway,IthinkIlostmyglovessomewhereoutinthatfieldofclover.Didyouseethem?Icanonlyhopelove.isforever.Iliveforyou.It'shardtogetbackinthe

匹配0个或多个空行,后面是love的字符

class="">$grep'*love're-fileIhadalovelytimeonourlittlepicnic.love,howmuchIadoreyou.Doyouknowtheextentofmylove?Oh,bytheway,IthinkIlostmyglovessomewhereoutinthatfieldofclover.Didyouseethem?Icanonlyhopelove.

匹配love或Love

class="">$grep'[Ll]ove're-file#对l不区分大小写Ihadalovelytimeonourlittlepicnic.Loverswereallaroundus.Itisspringtime.Ohlove,howmuchIadoreyou.Doyouknowtheextentofmylove?Oh,bytheway,IthinkIlostmyglovessomewhereoutinthatfieldofclover.Didyouseethem?Icanonlyhopelove.

匹配A-Z的字母,其次是ove

class="">$grep'[A-Z]ove're-fileLoverswereallaroundus.Itisspringtime.Oh

匹配不在A-Z范围内的任何字符行,所有的小写字符

class="">$grep'[^A-Z]'re-fileIhadalovelytimeonourlittlepicnic.Loverswereallaroundus.Itisspringtime.Ohlove,howmuchIadoreyou.Doyouknowtheextentofmylove?Oh,bytheway,IthinkIlostmyglovessomewhereoutinthatfieldofclover.Didyouseethem?Icanonlyhopelove.isforever.Iliveforyou.It'shardtogetbackinthegroove.

匹配love

class="">$grep'love\.'re-fileclover.Didyouseethem?Icanonlyhopelove.

匹配空格

class="">$grep'^$'re-file

匹配任意字符

class="">$grep'.*'re-fileIhadalovelytimeonourlittlepicnic.Loverswereallaroundus.Itisspringtime.Ohlove,howmuchIadoreyou.Doyouknowtheextentofmylove?Oh,bytheway,IthinkIlostmyglovessomewhereoutinthatfieldofclover.Didyouseethem?Icanonlyhopelove.isforever.Iliveforyou.It'shardtogetbackinthegroove.

前面o字符重复2到4次

class="">$grep'o\{2,4\}'re-filegroove.

重复o字符至少2次

class="">$grep'o\{2,\}'re-filegroove.

重复0字符最多2次

class="">$grep'o\{,2\}'re-fileIhadalovelytimeonourlittlepicnic.Loverswereallaroundus.Itisspringtime.Ohlove,howmuchIadoreyou.Doyouknowtheextentofmylove?Oh,bytheway,IthinkIlostmyglovessomewhereoutinthatfieldofclover.Didyouseethem?Icanonlyhopelove.isforever.Iliveforyou.It'shardtogetbackinthegroove.

重复前一个字符一个或一个以上

class="">$egrep"go+d"linux.txtLinuxisagoodgodassdxwbcvnbvbjkgooodfsawrerdxxhklgood#####0个或者一个字符ansheng@Ubuntu:/tmp$egrep"go?d"linux.txtgodassdxwbcvnbvbjkgdsystemawxxxx

或,查找多个字符串

class="">$egrep"gd|good"linux.txtLinuxisagoodgdsystemawxxxxgood

分组过滤匹配

class="">$egrep"g(la|oo)d"linux.txtLinuxisagoodgladgood

以上就是“Linux的正则表达式实例分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。