正则表达式
字符串的规则,给字符串定义一个规则
作用:
1 检测某一段字符串是否符合规则
2 从一大段文字中将符合规则的匹配出来
多用于爬虫中
规则;
元字符:
匹配的是一个字符串的内容
量词:
匹配的次数
字符组:
数字
[0123456789] #表示0到9之内的数字
[0-9] #表示0到9之内的数字
不能使用[9-0],正则表达式不能从大到小,只能从小到大
因为正则表达式的大小都是根据ASCII码表来判断的
字母
[a-z] #小写字母
[A-Z] #大写字母
[A-Za-z] #大写字母和小写字母
[A-Za-z0-9] #大小写字母和数字
[A-Za-z0-9_] 大小写字母,数字和下划线,(想要什么符号可以在括号内添加)
顺序可以改变,如果使用需要查找特殊字符需要使用转义字符
元字符
d #所有的数字
w # 所有的数字字母下划线
#换行符
#制表符
s #所有的空格,包括换行符和制表符
# 表示一个单词的边界(放在字符的前面表示是否是这个字符结尾,放在字符的后面,判断是不是这个字符开头)
反义词
W #除了数字字母下划线的所有
D #除了数字的所有
S #除了空白的所有
. #除了换行符之外的所有
dD #匹配所有
wW #匹配所有
sS #匹配所有
非字符组:
[^123] #除了123之外的所有值
^ #开头 一个字符只有一个开始,必须在开头
$ #结尾 一个字符只有一个极为,必须在末尾
###如果使用^开头,使用$结尾,这个字符串的长度就被规定死了,
| # 或者,左边的内容和右边的内容都是全集,且需要筛选的内容要与左边或者右边的内容全部相同。且,字符串长的必须放在符号的左边
www.(baidu|oldbay).com 小括号表示分组,正则表达式会对括号内的内容进行匹配(类似于算运算的优先级)
量词
量词 {}: 在量词的范围内尽可能多的匹配
d{9} 表示前面的紧挨着的规则必须连续出现
{n} 表示出现n次
{n,} 表示至少出现n次
{n,m} 表示出现n到m次
? 表示匹配0次或1次(用来查看某个字符是否存在,如果存在只能存在一次)
+ 表示1次或多次
* 表示匹配0次或多次
正则表达式的特性:
贪婪匹配(a.*x) :默认的
将所有的字符串都查询,然后反向查找第一个x取正向查的a到反向查的第一个x
在量词匹配时,尽可能多的匹配,查找从a开始到最后一个x之间的所有数据
惰性匹配(a.*?x) :需要手动输入
每查询一个值,就先看不是不是x,不是就交给.*处理
尽可能的少匹配,查找从a开始到x之间的所有数据