正则表达式中"."和"*"注意问题

正则表达式中元字符“ . ”和“ * ”结合在一起的意思是除换行符之外的任意字符;
如果我们要在一个中间部分不包含换行符的字符串中找出某些符合要求的文字:
如:要在 eeeaabbdddddeewwwcc,这段文字中找出“aabb"与cc"之间的文字,但并不包含aabb或者cc,那么可以这样写
(?<=.*aabb).*[^cc]
结果为:dddddeewww

那么如果文字为:eeeaabbdddddeewwwcceeeaabbdddddeewwwcc
那么结果就为:bbdddddeewwwcceeeaabbdddddeewww
这样就不符合要求了,那么如果改为:
(?<=.*aabb)[^cc]*
那么结果就是:
dddddeewww
dddddeewww

这里的两个正则表达式的区别为:
(?<=.*aabb).*[^cc] ------> 0或者1次任意非换行符 + aabb+任意次非换行符(需要的部分)+cc
                                            其实个人感觉它是碰到了换行符才结束的,而不是碰到了cc结束的;

(?<=.*aabb)[^cc]* ------> 0或者1次任意非换行符 + aabb+任意次非cc的字符(需要的部分)
                                            当发现有cc的存在,那么获取aabb和cc的中间部分;当碰到了cc本次结果获取结束,所以可以获得多次结果;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值