【Python57--正则1】

一、正则表达式匹配IP地址

1、search()方法:用于在字符串中搜索正则表达式模式第一次出现的位置

>>> import re
>>> re.search(r'chen','I love chenfeng')
<re.Match object; span=(7, 11), match='chen'>
>>> 

'''
|-- span(7,11):chen 下标在7到11的位置出现
'''

2、正则表达式中的“.”表示除了换行符中的所有字符 即:通配符

>>> re.search(r'.','I love chenfeng!')
<re.Match object; span=(0, 1), match='I'>

>>> re.search(r'chen.','I love chen.feng.com')
<re.Match object; span=(7, 12), match='chen.'

3、匹配点号如何做处理呢,只需要在点号前面加上反斜杠“”,这时候点号不代表任何字符,只代表点号自己

>>> re.search(r'.','I love chen.feng.com!')
<re.Match object; span=(11, 12), match='.'>

4、匹配数字:反斜杠+d   :  " d  "

>>> re.search(r'd','I love 123chenfeng.com!')
<re.Match object; span=(7, 8), match='1'>
>>> re.search(r'ddd','I love 123chenfeng.com!')
<re.Match object; span=(7, 10), match='123'>
>>> 

5、匹配IP地址

>>> re.search(r'ddd.ddd.ddd.ddd','192.168.111.123')
<re.Match object; span=(0, 15), match='192.168.111.123'>
>>>
这样匹配的问题是:
1、d匹配的数字范围是0~9,而IP的最大范围是255
2、这里要求每一组的IP地址必须是三个数字,如果遇到192.168.1.1这样的IP地址就没办法匹配成功

改进的方法:
1>、用中括号" [] "创建字符类
举例匹配 I love chenfeng.com  字符串中的l
>>> re.search(r'[a-z]','I love 123chenfeng.com!')
<re.Match object; span=(2, 3), match='l'>

举例匹配“I love 123chenfeng.com ” 字符串中的1
>>> re.search(r'[0-9]','I love 123chenfeng.com!')
<re.Match object; span=(7, 8), match='1'>
>>> 

 2>、限定重复匹配的次数 可以用大括号:{}

>>> re.search(r'ab{3}c','abbbc')
<re.Match object; span=(0, 5), match='abbbc'>
>>> re.search(r'ab{3}c','abbbbbbc')
匹配不了的可以用范围进行匹配
>>> re.search(r'ab{0,9}c','abbbbbbc')
<re.Match object; span=(0, 8), match='abbbbbbc'>
>>> 

3、匹配0~255的数字

>>> re.search(r'[01]dd|2[0-4]d|25[0-5]','188')
<re.Match object; span=(0, 3), match='188'>
>>>

“[01]dd|2[0-4]d” 中的“|”是“或”的含义,或者[01]dd成立,或者2[0-4]d成立,或者25[05]成立,其中任何一个成立都是可以的
[01]dd : 百位数字是0或者1的话,十位和各位可以是任何数字
2[0-4]d :百位是2,十位是0~5,则各位可以是任何数字
25[05] :百位是2,十位是5,则各位只能是0~5的数字

4、匹配IP地址

>>> re.search(r'(([01]{0,1}d{0,1}d|2[0-4]d|25[05]).){3}([01]{0,1}d{0,1}d|2[0-4]d|25[05])','191.168.1.1')
<re.Match object; span=(0, 11), match='191.168.1.1'>
>>>
 
原文地址:https://www.cnblogs.com/frankruby/p/10138326.html