1什么是正则表达式?
正则表达式本身就是描述规则的工具,用于指定字符串的查找
2正则表达式使用什么模块? re
即 import re
3.re.search((r"b","a")的作用? 在字符串a中查找字符串b(也称正则表达式)第一次出现的位置
re.search(r"b","a") 注意不要漏写r
>>> import re
>>> re.search(r"cde","abcdef")
<_sre.SRE_Match object; span=(2, 5), match='cde'> #左闭右开,且索引从0开始
#如果找不到的话会返回None(就是啥也不返回)
4.正则表达式中的点(.)有什么作用?通配符(可以代替换行符之外的任意一个字符)
<_sre.SRE_Match object; span=(0, 1), match='a'> #匹配一个任意字符,左闭右开
>>> re.search("..","abcdef")
<_sre.SRE_Match object; span=(0, 2), match='ab'> #匹配任意两个任意字符,左闭右开
>>> re.search("bcd.","abcdef") #查找bcd. 点代表任意字符
<_sre.SRE_Match object; span=(1, 5), match='bcde'> 找到bcde ,返回左闭右开的字符串所在范围
5.如何在正则表达式中做到去查找点(.)号本身?(因为在正则表达式中.表示通配符 ) \.
>>> re.search(r"\.","www.baidu.com")
<_sre.SRE_Match object; span=(3, 4), match='.'>
6.如何匹配一位数字? \d
\d表示匹配任何一位数字 \d的范围?[0,9]
>>> re.search(r"\d","abcd1234")
<_sre.SRE_Match object; span=(4, 5), match='1'> #匹配数字1
>>> re.search(r"\d\d\d","abcd1234")
<_sre.SRE_Match object; span=(4, 7), match='123'> #匹配数字123
7如何机智的写出查找ip地址的代码?
不机智的写法:
>>> re.search(r"\d\d\d\.\d\d\d\.\d\d\d\.\d\d\d","192.168.254.123")
<_sre.SRE_Match object; span=(0, 15), match='192.168.254.123'>
不机智的原因:1IP地址7由四组数字组成,每组数字的范围是【0.255】。上面这种写法把每组数字都视为3位数
2\d\d\\d可以表示【000,999】范围内的数字,超过255的都不是我们需要的结果
机智的写法:
为了表示字符串的范围,我们可以创建一个字符类
如何创建字符类? 用[]
字符类的含义?只要匹配字符类中的任何一个字符,那么都叫做匹配
>>> re.search(r"[def]","abcdef")
<_sre.SRE_Match object; span=(3, 4), match='d'> #匹配了d
在字符类中用-表示范围 [a-z]表示所有的英文字母中的一个
>>> re.search(r"[a-z]","bcde")
<_sre.SRE_Match object; span=(0, 1), match='b'> #找到了a
ab{3} 表示abbb
>>> re.search(r"ab{3}c","abbbcc")
<_sre.SRE_Match object; span=(0, 5), match='abbbc'>
如何设置某个字符重复的次数的范围?
>>> re.search(r"ab{1,10}","abbbbbb") #ab,abb,abbb,abbbb,abbbbb……只要在第二个参数中存在就会被匹配
<_sre.SRE_Match object; span=(0, 7), match='abbbbbb'>
在字符串中1-9都是字符,10就是两个字符
如何用整则表达式表示[0,255]范围内的数字?
\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])
|表示或
\d表示 【0,9】
[1-9]\d 表示【10,19】【20,29】【30,39】【40,49】【50,59】【60,69】【70,79】【80,89】【90,99】
1\d\d 表示【100,199】
2[0-4]\d 表示【200,209】【210,219】【220,229】【230,239】【240,249】
25[0-5] 表示【250,259】
查找ip地址:
>>> re.search(r"((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]","192.168.1.1")
<_sre.SRE_Match object; span=(0, 11), match='192.168.1.1'>
注意:小括号表示分组