java正则扩展库,正则表达式(五)—扩展正则表达式

正则表达式

扩展正则表达式

一位看了前面几篇文章朋友向我反馈,说前面匹配次数相关的正则中,前后两个没必要加,意思是"qin{2}" 写成"qin"{2}" 就可以了。确实没错,不过不能直接改成"qin"{2}" ,因为这属于扩展正则表达式的内容了,这也是本文需要讲的内容。

在Linux中,正则表达式可以分为"基本正则表达式"和"扩展正则表达式",前面几篇文章都是讲述的基本正则表达式,那么本文我们一起来总结下扩展正则表达式的内容。

文章继续以实例的模式和大家一起学习,下面是用来实验所用的文件。

68bfdf3476ef0c6acd06a67b23f67ce1.gif

1

{ }、()、+、?、

其实,扩展正则表达式基本正则表达式90%的用法是一摸一样的,只是有那么几个符号有区别,这几个符号就是{ }、()、+、?,分别对应基本正则表达式中的{ }、()、+、? ,是不是觉得扩展正则表达式方便多了。

要使得grep将正则表达式中的符号当做扩展表达式去理解,需要用到-E选项,如下示例表达式就是利用扩展正则表达式 {}匹配文件中qi后面出现2次字符n的行,其对应基本表达式:

cat regular_3.txt | grep -n --color  "qin{2}"

68bfdf3476ef0c6acd06a67b23f67ce1.gif

2

|

在扩展正则表达式中,还有一个很常用的符号 | ,它表示或,这是基本正则表达式所没有的,这个符号通常会和分组结合在一起用,下面的例子很清楚的告诉我们 | 的用法

68bfdf3476ef0c6acd06a67b23f67ce1.gif

那么如果|  不和分组结合用,会有什么区别了?还是看例子

68bfdf3476ef0c6acd06a67b23f67ce1.gif

很明显,|  有没有和分组一起用,区别很大,从上面的匹配结果很容易看出,"(n|z)$" 表示匹配以n结尾或者以z结尾的行;而"n|z$"则表示匹配以z结尾或者含有n的行。也就是说,如果不用分组,后面的$不会作用在前面的字符n上。

3

总结

扩展正则表达式就总结完了,多,有了前面基本正则表达式的基础,扩展正则表达式就是这么简单。好了,现在整个正则表达式的总结已经完了,基本上大家在工作中能用到的也就差不多这些了,最后大家一起思考一个综合性的正则表达式问题吧。

给出一个测试文件,找出文件中的邮箱地址,要解决这个问题,首先得知道什么是合法的邮箱地址,在网上搜了个关于合法邮箱地址的条件,懒得打字,就截图过来了。

68bfdf3476ef0c6acd06a67b23f67ce1.gif

下面是测试文件以及相应的答案。

68bfdf3476ef0c6acd06a67b23f67ce1.gif

68bfdf3476ef0c6acd06a67b23f67ce1.gif

总结

本文是正则表达式系列的第五篇文章,主要总结了扩展正则表达式和基本正则表达式的不同之处,到此正则表达式系列文章已经完结,将这些掌握了,应该能应付大家工作中的大部分需要了。后面会继续更新其它内容文章,希望对大家有所帮助,文章中如有遗漏或错误之处,还望大家指出!

推荐阅读:

专注服务器后台技术栈知识总结分享

欢迎关注交流共同进步

68bfdf3476ef0c6acd06a67b23f67ce1.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值