正则表达式与Python中re模块的使用
最近做了点爬虫,正则表达式
使用的非常多,用Python做的话会用到re模块
。
另外,给大家介绍一个在线测试正则表达式的神器网站
:http://tool.chinaz.com/regex
大家可以去这里练习正则表达式
下面总结一下正则表达式
与re模块
的基础与使用。
正则表达式
使用场景
关于正则表达式
的基本概念这里就不赘述了,大家可以去各种百科里查找它的定义。正则的使用场景
主要分为两个:
一是:检测某一段字符串是否符合规则,也就是我们常说的"校验"
二是:从一大段字符串中找到符合规则的字符串,可以理解为"检索"
对于第一种使用场景,我们在登陆或者注册时填写邮箱、手机号等内容的时候经常会见到——底层的实现思路就是利用正则“校验”我们输入的内容是否“规范”。
另外,正则的“检索”功能大量使用在爬虫
里,简单的说,爬虫
能从一个网站大量的数据中得到用户想要的内容等等......
需要特别注意,正则表达式只是用来处理字符串的
元字符
一:可以灵活使用的元字符:[] 与 [^]
(1)数字 [0-9]
(2)小写字母 [a-z]
(3)大写字母 [A-Z]
(4)大小写字母 [A-Za-z]
(5)大小写字母+数字 [0-9A-Za-z]
(6)注意一个字符组不限制个数:匹配三个的话:[0-9A-Za-z][0-9A-Za-z][0-9A-Za-z]
(7)大小写字母+ _与% [A-Za-z_%]
(8-1)匹配1-5 [1\-5] 用转义符,- 有特殊含义
(8-2)字符组中 - 是有特殊意义的,需要使用\作为转义符!
(9)[^123]——除了123都匹配,包括换行
二:匹配字符
(1)\d——所有数字
(2)\w——字母数字下划线
(3)\s——空白
(4)空格匹配空格
(5)\t——制表符
(6)\n——换行符
(7)\b——单词的边界 o\b——hello的'o'(o是单词的最后一个) \bo——ok的'o'(o是单词的第一个)
(8)\W——除了字母数字下划线
(9)\D——除了数字
(10)\S——除了空白符
(11).——匹配除了换行符所有的
(12)[\D\d]、[\W\w]、[\s\S]——匹配所有的
(13)[^123]——除了123都匹配,包括换行
(14)^——开始字符
(15)$——结束字符
(16)^.....$——开始+结尾,中间是5个除了换行的符号
(17)|——或 长的放在前面!
(18)()——分组 www\.(baidu|oldboy)\.com 匹配www.baidu.com或者www.oldboy.com
量词
量词用来限制匹配的次数
(1){n}——匹配n次
(2){n,}——匹配至少n次
(3){n,m}——匹配n到m次
(4)+——一次或者多次 匹配小数点的前后必须有数 \d+\.\d+
(5)*——0次或者多次 匹配整数:第一位是1-9不要是0: [1-9]\d*|0
(6)?——0次或者一次 匹配一个整数或者小数: \d+(\.\d+)?
贪婪匹配与惰性匹配
在正则中,默认的匹配模式是“贪婪匹配”,也就是说,在符合匹配规则的前提下尽可能多的去匹配字符
,但是有些时候,我们不需要匹配太多的内容,只要得到需要的“片段”内容就好了。
而量词
是匹配多次的,这时我们可以在量词的后面加上?
就可以让匹配“适可而止”了,这样的匹配规则就是惰性匹配
原文地址:https://www.cnblogs.com/paulwhw/p/10579914.html
时间: 2024-11-07 00:57:57