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

python-正则表达式

刚开始学习python解析页面的时候,就知道了常用有三种解析方式,即BeautifulSoup、Xpath、正则表达式。最开始我是用BeautifulSoup,后来学了selenium,就开始喜欢用xpath,再后来接触了scrapy,就放弃BeautifulSoup直接上xpath(BeautifulSoup学的也是皮毛,没细学)。而正则表达式也看了下,但是真的有点复杂,就没仔细研究,也几乎没用过。

然而,山水总相逢,在django配置url.py的时候,还是绕不过正则表达式。所以啊,世上本无捷径。

总结语法如下:

1、‘^’,开始字符:"^The":表示所有以"The"开始的字符串("There","The cat"等);

2、‘$’,结束字符:"of despair$":表示所以以"of despair"结尾的字符串;

3、二者都没有:"notice":表示任何包含"notice"的字符串;

4、‘*’,表示重复前面一个字符,0次或者多次

5、‘+’,表示重复前面一个字符,1次或者多次

6、‘?’,表示重复前面一个字符,0次或者1次

7、也可以使用范围,用大括号括起,用以表示重复次数的范围:

"ab":表示一个字符串有一个a跟着2个b("abb");

"ab":表示一个字符串有一个a跟着至少2个b;

"ab":表示一个字符串有一个a跟着3到5个b;

8、‘|’,表示或,在两个或者多个项目中选择

9、‘.’,可以代表任意一个字符:

"a.[0-9]":表示一个字符串有一个"a"后面跟着一个任意字符和一个数字;

"^.$":表示有任意三个字符的字符串(长度为3个字符);

10、‘[ ]’,表示允许其中的某一个(只是一个字符)可以出现

"[ab]":表示一个字符串有一个"a"或"b"(相当于"a¦b");

"[a-d]":表示一个字符串包含小写的'a'到'd'中的一个(相当于"a¦b¦c¦d"或者"[abcd]");

"^[a-zA-Z]":表示一个以字母开头的字符串;

"[0-9]%":表示一个百分号前有一位的数字;

",[a-zA-Z0-9]$":表示一个字符串以一个逗号后面跟着一个字母或数字结束。

你也可以在方括号里用'^'表示不希望出现的字符,'^'应在方括号里的第一位。(如:"%[^a-zA-Z]%"表示两个百分号中不应该出现字母)。

11、"\d": 匹配数字:

12、"\w":匹配字母,数字,下划线:

例如我要匹配"a2345BCD__TTz" 正则:"\w+" 这里的"+"字符为一个量词指重复的次数,稍后会详细介绍。

13、"\s":匹配空格 :

例如字符 "a b c" 正则:"\w\s\w\s\w" 一个字符后跟一个空格,如有字符间有多个空格直接把"\s" 写成 "\s+" 让空格重复

14、反义:写法很简单改成大写就行了,意思与原来的相反

"\W" 匹配任意不是字母,数字,下划线 的字符

"\S" 匹配任意不是空白符的字符

"\D" 匹配任意非数字的字符

"\B" 匹配不是单词开头或结束的位置

"[^abc]" 匹配除了abc以外的任意字符

15、 懒惰限定符:

"*?" 重复任意次,但尽可能少重复 :

如 "acbacb" 正则 "a.*?b" 只会取到第一个"acb" 原本可以全部取到但加了限定符后,只会匹配尽可能少的字符 ,而"acbacb"最少字符的结果就是"acb"

"+?" 重复1次或更多次,但尽可能少重复:

与上面一样,只是至少要重复1次

"??" 重复0次或1次,但尽可能少重复:

如 "aaacb" 正则 "a.??b" 只会取到最后的三个字符"acb"

"?" 重复n到m次,但尽可能少重复:

如 "aaaaaaaa" 正则 "a?" 因为最少是0次所以取到结果为空

"?" 重复n次以上,但尽可能少重复:

如 "aaaaaaa" 正则 "a?" 最少是1次所以取到结果为 "a"

上面的初级的正则规则基本可以解决大部分需求了,进阶的先不补充了。

此外,再贴一个正则的在线测试网址:http://tool.oschina.net/regex/

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券