Python 板


LINE

※ 引述《cryinrain (哑猫)》之铭言: : 各位高手好,最近小弟在自学Python : 在精通Python这本书里面,在正规表示法这段有讲到一个指定符"prev *?" : 解释是"零个或多个prev,愈少愈好" : 自己练习测试了半天,却无法理解这个指定符是什麽意思 : 恳请各位高手指导有没有比较容易理解的方式 这边先不讨论 Python , 以 Regexp 来说,用於数量的修饰应 该只针对前面跟随的字元或集合(或群组) 我自己对 Python 的正规表示法没有很熟悉,不知道有没有特殊用法, 但理论上这些应该都是一样的 以这个为例子不是很好,我稍微修改一下成: prev* , 先不考虑那个 ? 以这个例子来说的话, * 代表 "零个以上" 修饰的是 v 因此底下这些都符合这个叙述: pre prev prevv prevvvvvvvvvvvvvvvvvvvvvvvvv 这样写: (prev)* 的话,那麽底下这些都符合: <=== 什麽都没有的空字串 prev prevprev prevprevprev 回头看这个 ? , 这是当 ? 跟在数量修饰的 + 和 * ...等後面时,是越少越好 这边举的这个例子也很不好,稍微修改一下: pre.*x 先看没有加上 ? 的 首先要先知道 * 修饰的是前面的 . 而我们知道 . 代表任意字元 所以简单来说这个正规表示法就是在描述一个字串是 pre[任意字元任意数量]x OK ,那麽底下这几个字串,到底哪边属於 .* 的范围呢? prevx => prevx prev1234x => prev1234x prevx1234x => prevx1234x 第三个是不是出乎意料外呢? 这是初学正规表示法很容易遇到的问题,在 regepx 中, * 是 greedy:贪婪模式,尽可能的取,但还是要尽量能符合这个表示法 因此在第三个字串中,虽然遇到了 prevx1234x 这个 x 但是他发现,後面还有一个 x 还可以让我符合这个表示法 所以他会很贪心的把第一个 x 和後面的 1234 一并吃掉 所以第三个字串的 .* 会把 prevx1234x 黄色部分都吃掉 如果现在加上了 ? ,也就是: pre.*?x 那麽这样就不是贪婪模式了,而是 Reluctant ,尽量少取 前量个范例得到的结果都相同,而第三个的 .*? 就只会把 prevx1234x 这个 v 给吃掉,这就是所谓的取越少越好。 当然这边还关系到你是要 match 还是只是 search , 会有所不同。 但他的概念就是这样。 参考用 js 实作的部分: https://jsfiddle.net/tz9kpcrb/2/ 或者执行这个 code 试试看: import re ptr1='pre(.*)x' ptr2='pre(.*?)x' print(re.findall(ptr1,'prevx1234x')) print(re.findall(ptr2,'prevx1234x')) --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.139.154.78
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1464444106.A.7C3.html ※ 编辑: darkk6 (223.139.154.78), 05/28/2016 22:24:20
1F:推 wadd: 用心。清楚的好文 06/07 09:42







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP