首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于正则表达式的5个小贴士

正则表达式是一个非常强大的处理字符工具,但有时可读性很差、晦涩难懂,Jamie Zawinski 说道:

Some people, when confronted with a problem, think, “I know, I’ll use regular expressions.” Now they have two problems.

本来是一个问题,引入正则表达式之后就成了两个问题。其实并不是任何场景都需要正则表达式。在简单场景,能用字符串自己提供的方法解决问题就没必要用正则表达式,比如字符替换

判断字符串是否以某字符开头

re.match() 与 re.search()

re.match 从字符串的起始位置匹配,如果没匹配成功就不再往后匹配,返回 None。而 search 虽然也是从起始位置开始匹配,但是如果在起始位置没有匹配,就继续往后匹配,直到匹配为止,如果匹配到字符串末尾都没有匹配则返回 None

不分组的括号

我们知道正则表达式中括号可以用于分组提取,有时我们并不希望括号用于分组该怎么办,答案是使用 (?:),看一个例子,用正则表达式提取URL中的各个组成部分

上面虽然写了7对括号,但其实只有5个分组。下面是不使用 ?:,出现了 7 组数据

贪婪匹配

正则表达式默认是贪婪匹配的,也就是说它会在满足匹配条件的情况下尽可能多的匹配字符,例如这里有一段话:

里面有两对标签,如果你只想匹配第一对,使用

会从第一个开始,匹配到最后一个,如果要想尽可能少匹配则可以在元字符后面加

最后推荐学习正则表达式的3个学习资源

第一个是《正则表达式30分钟入门教程》,公众号回复 “rex” 获取电子书

第二个是《Python正则表达式指南》介绍了正则表达式的概念和re模块下面的常用操作,阅读地址:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html

第三个是一个在线网站:regexr.com,可以在线调试、检测正则表达式,如果是写复杂的表达式,有时不可能一步写到位,你需要不断修正表达式,那么这个网站无疑是最合适的,它能很清晰的看出来正则表达式是如何匹配字符串的。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171222B03ST200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券