学习爬虫一段时间了,觉得学正则表达式是个好的契机,
作为一个大二学生平时课太多,希望通过这种方式提高复习效率...
import re #re模块为正则表达式子专用
>>> re.search(r'love','i love you') #引号里为想查找的字符串
<_sre.SRE_Match object; span=(2, 6), match='love'> #结果显示找到,‘love’在2到6的位置。
>>> re.search(r'.','i love you') # . 代表通配符,所以之后结果显示第一个字母i
<_sre.SRE_Match object; span=(0, 1), match='i'>
>>> re.search(r'yo.','i love you')
<_sre.SRE_Match object; span=(7, 10), match='you'>
>>> re.search(r'\.','i love. you') #在 . 前面加\ ,即可转义,查找字符串中有 . 的位置
<_sre.SRE_Match object; span=(6, 7), match='.'>
>>> re.search(r'\d','i love. 123 you') # \d 即为所有数字,结果为找到1。(注意这个返回结果只返回一个)
<_sre.SRE_Match object; span=(8, 9), match='1'>
>>> re.search(r'\d\d\d','i love. 123 you') #若想返回多个数,就多写几个\d。
<_sre.SRE_Match object; span=(8, 11), match='123'>
>>> re.search(r'\d\d\d\.\d\d\d.\d\.\d','161.123.1.1') #一个查找ip地址的例子
<_sre.SRE_Match object; span=(0, 11), match='161.123.1.1'>
>>> re.search(r'[abcde]','i love you')
<_sre.SRE_Match object; span=(5, 6), match='e'>
>>> re.search(r'[123]','i love. 123 you') # [ ] 里可以加数字,但结果仍然只查找第一个符合 [ ] 标准的
<_sre.SRE_Match object; span=(8, 9), match='1'>
>>> re.search(r'[a-z]','i love. 123 you') # [ ] 里也可以加范围,字母数字的都可以
<_sre.SRE_Match object; span=(0, 1), match='i'>
>>> re.search(r'[1-2]','i love. 123 you')
<_sre.SRE_Match object; span=(8, 9), match='1'>
>>> re.search(r'[3-4]','i love. 123 you')
<_sre.SRE_Match object; span=(10, 11), match='3'>
>>> re.search(r'3{3}','i love. 12333 you') # { } 里可加中括号前面这个字符的重复次数
<_sre.SRE_Match object; span=(10, 13), match='333'>
>>> re.search(r'3{3}','i love. 123333 you')
<_sre.SRE_Match object; span=(10, 13), match='333'>
-------------------------------那么如何查找0~255中的数字呢,比如188------------------------------
>>> re.search(r'[01]\d\d|2[0-4]]\d|25[0-5]','188') #如果百位数字是0或者1,那么之后两位就无所谓了;如果百位是2,那么十位在0-4的情况下个位就无所谓了;如果
<_sre.SRE_Match object; span=(0, 3), match='188'> #十位为5,那么各位就只能在0-5之间了。结果显示成功查找到188(注意 | 为逻辑或)
------------------------------------------接下来匹配一个ip地址----------------------------------------------
>>> re.search(r'(([01]\d\d|2[0-4]\d|25[0-5])\.){3}([01]\d\d|2[0-4]\d|25[0-5])','192.168.123.123') #方式类似于上个例子,但是有个问题在于ip地址不一定都是三位的。
<_sre.SRE_Match object; span=(0, 15), match='192.168.123.123'>
>>> re.search(r'(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.){3}([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])','192.168.1.1') #解决方法是在位数后加个重复次数的选项,即出现不出现都可以。
<_sre.SRE_Match object; span=(0, 11), match='192.168.1.1'>
----------------------------------------------------------------------------------------------------------------------