最近接触到了正则表达式,就是用来匹配对应的字符串。我觉得这很神奇,所以我开始研究。有句古话说得好:“爬虫写得好,狱粉就饱了”。哈哈哈,当然是开玩笑了。工具推荐regex101:build,test,anddebugregex这个网站可以帮助我们实时测试RegExp(正则表达式),后面的教程都是在这个平台上进行的。RegEx中各种符号的用法要学习RegEx,首先要学习各种符号的用法。1.限定符限定符只作用于左边的字符,或者左边的表达式。?表示可以出现0次或1次,即可有可无+表示可以出现1次或多次*表示可以出现任意次数{x}表示必须出现x次,而{l,r}表示出现的次数必须在闭区间[l,r]之间,可以省略一个。下限默认为0,上限默认为无穷大。可以这样写:也可以这样写:不难发现前面的?+*可以用{}表示,但是为了方便,还是会用前面的表达式。2.“或”运算几乎所有的编程语言都有一个or运算来表示一个不容易一步表达的逻辑集合,在RegExp中也是可以的。符号:|可以将左右表达式的并集作为一个新的表达式,但是优先级低于表达式的拼接。比如我想得到所有的a和an,我可以这样写。注意两边都要用方括号和\b包围。\b确保这是一个单词而不是单词的一部分。括号是为了防止“\ba”和“an\b”被用作两个表达式。我们的表达应该是a和an。3、字符类格式:[abc]表示该位可以是abc中的任意字符,也可以用范围表示,如[a-z]表示该位可以是小写字母,[a-zA-Z0-9]+表示这里可以是一个或多个“大小写字母或数字”。比如我想按照“班级+学号”的格式匹配zy02班级的所有人,可以如下图进行。如果你想找出所有的jsj1到3类,你可以这样做。这里\d相当于[0-9]。值得注意的是这里的非法学号jsj0100是没有匹配到的。也可以在[]开头加一个^字符表示排除。4、元字符\d代表数字\D代表非数字\w代表字母、数字和下划线\W代表非字母、数字和下划线\s代表空白字符\S代表一个非空白字符^匹配行首$匹配行尾5。贪心匹配和惰性匹配RegExp默认的匹配方式是贪心匹配,即越长越好。如果我要匹配一段HTML中的每一个<>标签,如果我这样写的话,整个文档都会被匹配成一个长字符串。这显然不是我们想要的结果,我们可以使用吗?更改为惰性匹配。修饰符引用菜鸟教程的一篇文章《正则表达式 – 修饰符(标记) | 菜鸟教程》,直接偷懒。一般用/g表示global全局搜索。在Python中使用RegExpython,首先需要引入re库,这是一个非常强大的字符串匹配库。我们使用re.search(pattern,string[,flags])进行匹配,它会返回一个结果元组。如果没有找到,则返回None,常用于判断。如果我想在python中判断某个公式是负数还是表达式,我可以这样匹配:再比如,如果我想查找某个html中的所有a标签,我可以这样匹配,re.findall返回一个列表。本篇到此结束,感谢您的阅读,如果本文对您有用,请点赞收藏关注!
