Linux的正则表达式实例分析
今天小编给大家分享一下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正则表达式元字符
匹配以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的正则表达式实例分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。