码迷,mamicode.com
首页 > 编程语言 > 详细

python中正则表达式的一些问题

时间:2018-06-22 00:59:36      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:arch   自己   rda   数字   验证   非贪婪   一模一样   子串   sea   

今天听到一句话,觉得很在理——"当你遇到一个问题,想到用正则表达式解决时,就变成了两个问题"

这也从侧面说明了正则表达式比较难理解。下面我将用通俗易懂的方式总结一下,最近遇到的一些正则表达式的问题

一. 贪婪匹配的"毛病"

1. 太贪婪就"歇菜"了

匹配模式为r".*(\d*).*",在这个模式中,(\d*)表示贪婪匹配,匹配前面的字符\d,也就是数字0次或无数次,但是我们的字符串中,\d匹配无数次的情况是不存在的(实际上对于search方法,它会找到"1",如果"11"不满足"1"匹配无数次,那么它就会选择匹配 "1" 0次,匹配0次后就直接返回了),因此,(\d*)表示的是匹配前面的数字0次,既然是0次,那么返回的分组的内容应该是空字符串‘‘,group(1)和groups()都能验证这一点,比如group(1)代表返回第1个分组的字符串,groups()返回一个包含所有小组字符串的元组,由于本例中只有一个分组,分组号为1,因此,我们可以看出得到的是空字符串‘‘

技术分享图片

但是,有人又问了,为什么.group()看到的是匹配整个字符串?事实上,我们的分组——匹配前面的数字0次——是不起任何作用的,就相当于匹配模式是r".*.*",不信请看下图,结果是不是一模一样?

技术分享图片

举个例子,匹配模式是很爱财的朋友,我的银行余额是字符串,有一天他突然向我借钱,哥们,能不能借我很多钱?

我问,具体多少?他说,当然是越多越好啊,呵呵,这个贪心的人。我查询账户余额,一瞅,只剩下10万了,当然选择不借给他!因此我知道他贪得无厌,我自己如果借给他10万,他会问我要20万,30万...甚至更多,所以,对于利欲熏心的朋友,我是拒绝的——最后他一分钱也没拿到,得到的是空(空字符串‘‘)。于是,这位朋友算是看了一眼我的账户余额(search()),灰溜溜的走了

2. "疑心重重"的贪婪

有一天,这个朋友又来了,这次他的疑心又加重了一些,他又向我借钱,哥们,能不能借我很多钱?

我掏出手机查了一下账户余额,上面写着大约"10万",这位朋友就是不死心,明明是不能满足他的贪心,他还死缠着我不放,非要我查清楚具体的明细给他看,而且要精确到小数点之后的几角几分,第一次,我告诉他大约10万,不能借给他,他拿到了空(空字符串‘‘),第二次,当我查询具体明细时,上面显示"101283.88"元,我再次拒绝了他,他又拿了一次空,这就是findall()的作用,返回所有能匹配到的子串

技术分享图片

二. 贪婪的"顿悟"

1. "请把贪婪交给别人"

我的朋友在多次借钱无果的情况下,经过我苦口婆心的劝说,终于有点醒悟了,他打算洗心革面,做一个清心寡欲的人

有一天,他突然来找我,哥们,能不能借我点钱,两位数的都成

我一听,妈呀,这改变颇大,得了,借他99块钱还是没问题的,正要掏出99元时,他突然拦住我,表示要看我的账户余额

惊出一身冷汗,但还是抱着信任他的态度,把手机给他,他看了账户余额,"101283.88"元,缓缓地说道,你能借我8毛8吗?

当然可以——我松了一口气,有点怀疑的望着他,对了,你的贪婪哪里去了?

他不假思索的说,我把贪婪给了别人——我们贪婪家族,辈分排在我前面的那个".*",有了他,我可以不背负贪婪的恶名,我只会找到最后面的两位数,对你的余额来说,应该是最少的

技术分享图片

2. 非贪婪——"大家都不贪了,才能实现互惠"

有一天,我的朋友开心的跑来找我,说他的前辈也洗心革面了,开始慢慢习惯清贫、习惯满足

我知道,这是我朋友的功劳。当他得到欲望的危害后,他也向布道师一样向前辈们传递这种思想

他的前辈就接收了他的洗礼,并且还刻意在帽子上画了一个"?"的标记,那是他独有的限制自我的符号

 

当然,这次朋友也是来向我借钱的,哥们,能不能给我借点钱,两位数的都行,就像上次的语气一样

我这时卡里还有"199.88"元,为什么只剩下这么点?是因为最近去炒股了

于是,我拿出99元,最大的两位数给他,跟他说——快收下,这是你应得的

现在他也不仔细查看我的余额明细了,瞄了一眼大概的余额就收下了。的确,他在一天天进步...

技术分享图片

 

python中正则表达式的一些问题

标签:arch   自己   rda   数字   验证   非贪婪   一模一样   子串   sea   

原文地址:https://www.cnblogs.com/cnhkzyy/p/9211504.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!