python|武林高手正则表达式的两三事

【一】神秘的宝藏

话说编程世界里各派明争暗斗不断,只因所有帮派都在争夺一个名为“主流语言”的绝世宝藏,据说谁得到它就可以称霸武林、一统天下……

某日武林大会之上,各派又在讨论寻宝一事。拥趸最多的Java率先发言:凭我“面向对象”如此雄厚的家庭背景,和我的绝杀技——“跨平台应用”剑法。谁能比的了我?这宝藏非我莫属。

此语一出,顿时四座皆惊。首先资历最老的C语言就发话了:年轻人,切勿鲁莽。先不说我家的祖传技法移花接木(同时具有高级语言汇编语言的特点),单说数据处理编写系统软件的本领,你还嫩了点。而且不巧犬子的母亲同属“面向对象”家族。

C语言身后的C++听到这话顿时高傲地扬起了头。血统纯正的王子HTML5(HTML5是用于构建因特网的核心技术的标准语言)也鄙夷地看了JAVA一眼。

正在这剑拔弩张之时,苹果家的Objective-C却发现了一个奇怪的人,自己在傻傻地研究乱七八糟地东西,于是他凑上前问了一句:“敢问兄台哪门哪派、师从何人?”语毕一个憨厚的脸抬了起来:“不才姓正则名表达式,你可以叫我小正哈哈。我无门无派,只因对一些匹配的东西略有涉猎,才会被拉进这武林大会之中。”

最后这种紧张的氛围还是被称作“胶水语言”的和事佬Python给化解了:“哎呀,咱们都很厉害都很厉害,要不然怎么能踏进这个屋子呢?既然这样,不如就一起去寻宝呀!”

虽然大家纷纷同意了,但各派都打着自己的算盘。只有天性纯良的小正游离于武林之外,似乎没有注意武林各派的争斗,一心研究着自己的东西……

【二】踏上寻宝之路

又说众人一同踏上寻宝之路。要说他们为何同意一起,皆因他们之前都独自尝试过无数次都没成功……

话说一行人行至“字符山”,该山怪石嶙峋、几无鸟声,诡异的氛围告诉他们:危险来了。

果然,领头的几位小将纷纷口吐白沫而亡,众人见此状也不敢前行了,于是都停留原地寻求解决办法。可是这些小兵都是刚刚踏入这座山,既没有喝此山的水、也没有采摘过野果之类的吃食,为何突然变成了这样呢?

各方大佬纷纷迷惑不解,这时一少年却径直走入那怪山之中,竟毫发未损!

正在众人纷纷惊愕不语时,一个稚嫩的声音响了起来:“小正哥哥,你好厉害呀!”却是苹果家的那小子正满脸艳羡。

少年这时也缓缓走了回来,略带羞涩地挠了挠头说:“其实也没什么,不过这座山上的机关我略有了解罢了。”

那咱们来细细说一说这正则表达式到底有什么本领呢?原来他有三绝:“测(测试字符串内的模式进行数据验证)”“换(替换文本)”“提(基于模式匹配从字符串中提取子字符串)”

(例如,您可能需要搜索整个网站,删除过时的材料,以及替换某些HTML 格式标记。在这种情况下,可以使用正则表达式来确定在每个文件中是否出现该材料或该 HTML 格式标记。此过程将受影响的文件列表缩小到包含需要删除或更改的材料的那些文件。然后可以使用正则表达式来删除过时的材料。最后,可以使用正则表达式来搜索和替换标记。)

再说说这时,趾高气扬的Java率先发问:“你这毛头小子当真能解这难题?”小正谦逊一笑,缓缓道来:“不才略通此术。过此山每一步都要走对,否则就会吸进此山特有的“匹配错误”毒气,然后口吐白沫而亡。虽然各大门派都有绝世武功在身,解锁一般的机关道法(对静态文本执行简单搜索和替换任务提供与预期的搜索结果匹配的确切文本)当然不在话下,但此机关灵活性极高,若采用一同的方法去闯这个关(搜索动态文本),即使不是不可能,至少也会变得很困难。”

这时和事佬python焦急地询问:“那请问你能帮我们过去吗?”

“当然可以啦”小正笑眯眯地说。

接着,小正教给了每个人一套“防毒气法”——根据每个人的体质有略微的区别。也许因为python特别和气吧,小正教他教得特别认真,甚至将自己毕生所学倾囊相授(re 模块使 Python 语言拥有全部的正则表达式功能)——

P大叔,我教给你的是re气法里面有好多招数(函数),有compile、match、search、findall、finditer、split、sub和subn等。它有两种运法:

1)先将字符串形式编译为Pattern实例,然后使用Pattern实例处理文本并获得匹配结果(一个Match实例),最后使用Match实例获得信息,进行其他的操作

步骤实例

我一步步和你仔细说哦:

①re.compile(strPattern[, flag])

这个方法是Pattern类的工厂方法,用于将字符串形式的正则表达式编译为Pattern对象。 第二个参数flag是匹配模式,取值可以使用按位或运算符'|'表示同时生效,比如re.I | re.M。

可选值

②Match(Match对象是一次匹配的结果,包含了很多关于此次匹配的信息,可以使用Match提供的可读属性或方法来获取这些信息)

属性
方法

③Pattern

Pattern对象是一个编译好的正则表达式,通过Pattern提供的一系列方法可以对文本进行匹配查找。Pattern不能直接实例化,必须使用re.compile()进行构造。Pattern提供了几个可读属性用于获取表达式的相关信息:

属性
方法

2)直接用re.match,re.search和re.findall等函数直接对文本匹配查找

①re.match函数

只匹配字符串的起始位置,如果不成功的话就返回none

一步走错,全盘皆输

②re.search方法

re.search 扫描整个字符串并返回第一个成功的匹配

循环查找,一见倾心

【三】宝藏谜底终于揭开

终于,他们历经千难万险终于找到了宝藏所在地。偌大的石碑上面只刻了单薄的几行字:

流者,众水聚也。

一起经历了许多许多的各派高手这时都恍然大悟了,所谓“主流语言”说的不就是我们每一个让编程更高效的语言吗?团结合作的精神才是真正的宝藏啊,只有我们每一个语言通力合作,在计算机的方方面面各司其职,才能让计算机世界更加和谐、高效和美满。

然后大家又不禁感叹:小正才应该是我们的榜样,一路走来默默无闻地帮助着我们,不管是linux、java、python、c、c++、Perl、PHP、Python、JavaScript和JScript等语言都可以使用,在Perl中还内建了一个功能强大的正则表达式引擎。

我们每一个语言都不能成为霸主,小正却是万能的工具。

终于,正则表达式成为了武林盟主,一统计算机天下。


哎呀!说了这么多不正经的,还是看看大家的洗洗脑吧:

1)正则表达式30分钟入门:http://deerchao.net/tutorials/regex/regex.htm

2)Python正则表达式指南:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html

3)Python正则表达式的七个使用范例:http://blog.jobbole.com/74844/

4)能让你少写1000行代码的20个正则表达式:http://www.codeceo.com/article/20-regular-expressions.html

5)浅谈Python 正则表达式:https://zhuanlan.zhihu.com/p/26019553

6)正则表达式-菜鸟教程:http://www.runoob.com/regexp/regexp-tutorial.html

7)Python 正则表达式:https://mp.weixin.qq.com/s?__biz=MzIwMDU3MDkzNg==&mid=2651305404&idx=1&sn=047e69c48fb328b037a800effcd59c3c&chksm=8d0834ebba7fbdfd512abc61619113aa7c4d439ecbffa78b5314700a32aa7d000ef2c65b34c5&mpshare=1&scene=23&srcid=0127dE2vi9VzVsAxSbchVLZB#rd

8)正则表达式(转自维基百科):http://www.360doc.com/content/10/1105/18/928711_66914604.shtml

9)正则表达式(转自搜狗百科):http://baike.sogou.com/v107588.htm?ch=ww.xqy.xgbk

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容