解析正则表达式的使用方法
很多初学者对正则表达式望而却步,那家伙,听到正则来了掉头就跑啊!跑什么呢?跑了就能解决问题吗?当然不能,最后还是要直面它的。 正如伟大领袖毛主席说的那句话一样,其实,正则表达式不过就是一个纸老虎罢了。不信啊,不信请听我郑康来给你们讲解正则表达式: ps:我可没有打错字哦,没错,我就是叫郑康哦! 好了,言归正传,Linux中的正则表达式其实可以分为两种:一种叫做基础正则表达式,还有一种就是扩展表达式。这里我们只谈基础就足够了,至少应对工作足够了。 ① *或a* *代表全部,但是需要注意的是,这里的*与通配符里的*可不是一回事哦!再次强调一下,通配符是完全匹配,而正则表达式是包含匹配。所谓包含匹配,就是只要包含就显示出来。 如图,test文件中已经写入了很多a和b,这里为了用作演示: 看到了吗?坏了,为什么不是把只包含a的都取出来,怎么把b也取出来了呢?那么这时候你们就要先理解在正则表达式中的*到底代表了什么意思?难道不是和通配符中*的意义差不多吗? 哎,还真就差了很多。在正则表达式中的*前面的东西,如上面的a*代表的含义是匹配包含0到无穷个a, 而不是单纯的指仅包含a。 那么这时候要想只取出a应该怎么办呢?有办法,在a的前面再加一个a,这里需要注意,*前面的那个字母是谁无所谓,重点是该字母前的字母。 例如:匹配只包含a的情况 grep "aa*" test ② .代表任意一个字符,正则表达式里的.与通配符里的?几乎一模一样 如图: ③ ^代表匹配行首 例如:文件test中有said和soid这两个家伙,现在用^把这两个家伙找出来 如图: ④ $用于匹配行尾 这个更简单了,直接上代码吧 ⑤ []用于匹配括号中指定的任意一个字符,这个和通配符中的[]又有些类似。 ⑥ [^]表示匹配除括号中的字符以外的任意一个字符。啥意思?就是说^放在外面就是匹配行首,放在[]里面就表示取反。 例如,我们来取不包含a的字符 哎,这里为什么包含了a呢?其实,[^]真正的含义应该这么理解:过滤只含有a的字符 [^0-9]表示过滤全是数字的字符 [^a-z]表示过滤全是小写字母的字符 [^A-Z]表示过滤全部是大写字母的字符 注意:^[^a-z]表示匹配首字母不是小写字母的字符 ⑦ 转义符,用于取消特殊字符的含义。 举个例子,正则表达式中的.就是代表任意字符的意思,但是.的意思就是单纯的一个“.” ⑧ {n}表示前面的字符恰好出现n次 举例:来吧,上图吧 ⑨ {n,}表示前面的字符出现不少于n次 举例:还是搜索那个字符串,废话不多说,一言不合就上图 ⑩ {n,m}表示匹配不少于n,不多于m的字符 如图: 亲情通告:如果哪位童鞋遇到看不明白的地方,请加QQ群:579292790 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |