美文网首页
学不会的正则表达式

学不会的正则表达式

作者: wu_sphinx | 来源:发表于2019-02-16 22:59 被阅读10次

印象中知道正则表达式很有用,需要用时上网查资料(答案)照搬,感觉好像学会了,下次需要用到时似乎又忘记了,仿佛陷入了一个迷之自信的怪圈,最后结果就是感觉好像会,但其实不会!

这不,今天又遇到了,我只是想需要一个not endswith str这样的正则表达式,一向快糙猛的风格又不得法,拿来主义习惯了,最近上谷歌不太畅通,感觉不会编程了一样,难道是不幸中了传说中面向搜索引擎编程的毒?

还是以解决问题为重。
问题描述?
匹配不是以google作为结尾的字符串
对应正则表达式如下(可在在线正则表达式测试上验证):

  1. .*(?<!google)$
  2. .*(?!google)$

逐个看答案1字符串意义

  • .:匹配除换行符以外的任意字符
  • *:重复零次或更多次
  • (?<!google):匹配前面不是google的位置
  • $:匹配字符串的结束

.*通常搭配一起用,表示除换行符以后的任意字符串,$作为字符串的结尾与字符串的开头^相对应,这几个都是单字符,很容易记住和运用,相比而言(?<!exp)就要稍微“复杂“一点点了,无它,多用几次也就记住了。

比较一下二者的执行速度

import re 
import time 

def get_re_time(pattern, str, count=1000000):
    st = time.time()
    for _ in range(count):
        re.match(pattern, str)
    return time.time()-st

if __name__ == "__main__":
    for _ in range(10):
        print('(?<!exp) seconds is:{} (?<!exp) is seconds:{}'.format(get_re_time('.*(?<!google)$', 'adsfadgoogle'), get_re_time('.*(?!google)$', 'adsfadgoogle')))

结果

(?<!exp) seconds is:0.9892270565032959 (?<!exp) is seconds:0.8230881690979004
(?<!exp) seconds is:0.9732108116149902 (?<!exp) is seconds:0.8235759735107422
(?<!exp) seconds is:0.9880321025848389 (?<!exp) is seconds:0.8225719928741455
(?<!exp) seconds is:0.9598960876464844 (?<!exp) is seconds:0.824509859085083
(?<!exp) seconds is:0.954564094543457 (?<!exp) is seconds:0.8188457489013672
(?<!exp) seconds is:0.958960771560669 (?<!exp) is seconds:0.8349621295928955
(?<!exp) seconds is:1.1263601779937744 (?<!exp) is seconds:0.8461761474609375
(?<!exp) seconds is:0.9537780284881592 (?<!exp) is seconds:0.8274679183959961
(?<!exp) seconds is:1.001042127609253 (?<!exp) is seconds:0.8258669376373291
(?<!exp) seconds is:0.9560801982879639 (?<!exp) is seconds:0.8229031562805176

单以此用例来看,答案2的速度要快那么一点点,原因暂且不表,留待下回分解。

以下文章值得长期收藏

相关文章

  • 学不会的正则表达式

    印象中知道正则表达式很有用,需要用时上网查资料(答案)照搬,感觉好像学会了,下次需要用到时似乎又忘记了,仿佛陷入了...

  • 6、7个小时学习Perl正则(大概)

    6、7个小时是我学习正则用的时间,网上有个著名的30分钟正则表达式,可惜本人愚笨,学不会,最后还是看书学的。原本是...

  • 学不会

    承认吧,很多事情我都学不会。 学不会穿高跟鞋,学不会化妆,学不会一手好字,学不会舞蹈~ 学不会委婉,学不会迂回,学...

  • 谢谢你的不珍惜,让我学会的放下

    人总想学, 却学不会的,是珍惜。 学不会珍惜时间, 于是浪掷了青春。 学不会珍惜眼前, 于是失去了所爱。 学不会珍...

  • 你也走了很远的路吧

    “他们学不会的,学不会无法理解的事情就保持沉默,学不会对每个在自己领域努力的人表示尊重。学不会的,他们永远就在他们...

  • 学不会

    我还是学不会 学不会去妥协 学不会去面对 学不会成为你们期望的那样 我习惯了 习惯了沉默 习惯了胡思乱想 习惯了你...

  • 吾爱

    学不会那些温甜的言语 学不会刻意亲昵 学不会大秀恩爱 学不会制造惊喜 我只会这样爱着你 如寒松般静穆寡语 深藏的眸...

  • 成长

    虽说年近30,但感觉还是没有长大,学不会为人处事、学不会表达自己、学不会社交,学不会成长中遇到的林林种种! 想多了...

  • 殇。

    我还是会学不会承受… 学不会克制… 学不会任何事都淡然处之… 我还是会哭的像个孩子……

  • Linux命令行与Shell脚本编程大全-shell正则表达式

    本章内容: 定义正则表达式 了解基本正则表达式 扩展正则表达式 创建正则表达式 定义正则表达式 正则表达式是你定义...

网友评论

      本文标题:学不会的正则表达式

      本文链接:https://www.haomeiwen.com/subject/ogzieqtx.html