正则表达式
正则表达式
1.检测每一段字符串是否符合规则
2从一大段文字中匹配符合规则的字符串
主要应用
Python 爬虫
注意:只和字符串相关
元字符
描述的是一个位置上的内容规则
列
# [012345]
# [0-5]
# [0-9]
# [9-0] 不能从大到小来规定范围
字符组内的所有范围根据ASCII码来的,一个中括号表示一个字符
数字
[0-9]
字母
小写[a-z]
大写[A-Z]
大小写[a-zA-Z]
数字和大小写[A-Z0-9a-z]
大小写字母加下划线[A-Za-z_]
括号内没有符号,根据ascii码从小到大
在字符组中-是有特殊意义的,如果我们想取消这个横杆的特殊意义要加\作为转义符
特殊规则的元字符
[0-9] \d 匹配任意一个数字 digit
[A-Z0-9a-z] \w 变量(标识符)
\n 匹配回车换行
\t 匹配制表符table
空格本身匹配 空格
\s 匹配所有的空白
\b 匹配一个单词的边界
反义词(大写)
\W 除了数字字母下划线之外的所有
\D 除了数字之外的所有
\S 除了空白之外的所有
. 匹配换行符之外的所有
[^123] 除123之外的所有
匹配所有 :[\D\d] [\W\w] [\S\s] 括号内为大小写
开始符和结束符
^ 永远在一个规则的最开始
& 永远在一个规则的最末尾
^和& 规定了这个字符串的长度,并且在这个长度内的内容
| 或的概念
123|456 取123 或则456
() 表示分组
www\.(baidu|oldboy)\.com 表示取www.baidu.com或则www.oldboy.com
量词
在量词范围内尽可能多的匹配
{n} 表示出现n次
{n,} 表示至少出现n次
{n,m} 表示出现n-m次
? 表示匹配0次或则1次
+ 表示匹配1次或多次
* 表示匹配0次或多次
注意 量词表示匹配的次数 元字符表示匹配一个字符的内容
列:
# 匹配整数
# [1-9]\d*|0
# 匹配小数
# \d+\.\d+
# 匹配一个整数或者小数
# \d+\.\d+|([1-9]\d*|0)
# \d+\.?\d*
# \d+(\.\d+)?
# 正则表达式 匹配身份证号码
# 15位
# 首位不能为0
# ^[1-9]\d{14}$
# 18位
# 首位不能为0,末尾可能是x和数字
# ^[1-9]\d{16}[\dx]$
# 合起来
# ^([1-9]\d{16}[\dx]|[1-9]\d{14})$
# [1-9]\d{14}(\d{2}[\dx])?
转义符
# 在测试的网页上写的是什么
# 就直接复制过来
# 然后在字符串外面加上一个r
# r'\\n' --> r'\n'
# t 't'
# \t \本身具有转义作用,相当于改变了t本来的面目
# \\ \本身具有转义作用,\\相当于转义了\的特殊作用,相当于普通的一个'\'
惰性特点:
需要我们手动设置的 尽可能少匹配
贪婪特性:
默认的 尽可能多匹配
在量词范围内尽可能多的匹配 - 贪婪匹配
# a.* 以a开头的任意一个字符串都可以被匹配出来
# a.*? 非贪婪
# a.*?x 从a开始匹配,匹配任意长度的字符,遇到一个x就立即停止