Python测试开发预习课7/30--正则表达式

1、什么是正则表达式

就是写了一个字符串,字符串包含了模糊匹配的规则,
来根据规则匹配字符串的内容。

import re

regular expression:正则表达式

用途:来进行模糊匹配的

match:表示从字符串的开头来进行匹配,没有匹配到返回none,匹配到了返回
匹配结果的对象

search:表示从字符串的任意位置匹配到一次,就算成功了。没有匹配到返回none,匹配到了返回,匹配结果的对象

findall:找到所有可以匹配到的结果,匹配到的多个内容,放到一个列表中。
如果没有匹配到,那么就返回一个空列表。

>>> import re
>>> s="I am 12 years old!22!"
>>> re.findall(r"\d+",s)
['12', '22']
>>> re.match(r"abc","abcd")
<_sre.SRE_Match object; span=(0, 3), match='abc'>
>>> re.match(r"abc","cabcd")

在这里插入图片描述

2、math\search\finall的区别
>>> re.match(r"a","I am a boy!")
>>> re.match(r"a","a I am a boy!")#从字符串的开头来进行匹配,没有匹配到返回none,匹配到了返回匹配结果的对象
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>>
>>> re.search(r"a","I am a boy!")#从字符串的任意位置匹配到一次,就算成功了。没有匹配到返回none,匹配到了返回,匹配结果的对象
<_sre.SRE_Match object; span=(2, 3), match='a'>
>>>
>>> re.findall(r"a","I am a boy! a good boy,a good man")#找到所有可以匹配到的结果,匹配到的多个内容,放到一个列表中。如果没有匹配到,那么就返回一个空列表。
['a', 'a', 'a', 'a', 'a']
注意:没有转义不加“r”也可以。
>>> re.match("a","a I am a boy!")
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> re.search("a","I am a boy!")
<_sre.SRE_Match object; span=(2, 3), match='a'>
>>> re.findall("a","I am a boy! a good boy,a good man")
['a', 'a', 'a', 'a', 'a']

在这里插入图片描述

3、练习题
#做判断:如果匹配到了,做一个事情,没有匹配到做另外一件事情
import  re
if re.search(r"abc","I am a abc"):
    print("句子中包含abc")
else:
print("句子中不包含abc")

在这里插入图片描述
search和match带.表示模糊匹配:
用途:来进行模糊匹配的

match:表示从字符串的开头来进行匹配,没有匹配到返回none,匹配到了返回
匹配结果的对象

search:表示从字符串的任意位置匹配到一次,就算成功了。没有匹配到返回none,
匹配到了返回,匹配结果的对象

findall:找到所有可以匹配到的结果,匹配到的多个内容,放到一个列表中。
如果没有匹配到,那么就返回一个空列表。
在这里插入图片描述

4、一次编译多次使用
#注意:将表达式进行编译使用起来更方便。
>>> import re
>>> pattern=re.compile(r"abc")# pattern编译
>>> pattern.match("abcdefg")
<_sre.SRE_Match object; span=(0, 3), match='abc'>
>>> pattern.search("I am a good abc,a abc!")
<_sre.SRE_Match object; span=(12, 15), match='abc'>
>>> pattern.findall("abc I am a good abc")
['abc', 'abc']

在这里插入图片描述

5、\d表示匹配数字
>> import re
>>> re.search(r"\d","I am a 7 years old boy!")
<_sre.SRE_Match object; span=(7, 8), match='7'>
>>> re.search(r"\d","I am a 8 years old boy!")
<_sre.SRE_Match object; span=(7, 8), match='8'>
>>> re.search(r"\d","I am a 0 years old boy!")
<_sre.SRE_Match object; span=(7, 8), match='0'>
>>> re.search(r"\d","I am a 01 years old boy!")
<_sre.SRE_Match object; span=(7, 8), match='0'>
>>> re.search(r"\d","I am a 1 years old boy!")
<_sre.SRE_Match object; span=(7, 8), match='1'>

在这里插入图片描述

6、\d+:量词,表示匹配一个或者多个
>>> re.search(r"\d+","I am a 12345 years old boy!")
<_sre.SRE_Match object; span=(7, 12), match='12345'>
>>> re.search(r"\d+","I am a 1 years old boy!")
<_sre.SRE_Match object; span=(7, 8), match='1'>

在这里插入图片描述

7、\d*:量词,表示匹配0个或1个或多个
>>> re.search(r"\d*","I am a 1 years old boy!")
<_sre.SRE_Match object; span=(0, 0), match=''>
>>> re.search(r"\d*","I am a 12345 years old boy!")
<_sre.SRE_Match object; span=(0, 0), match=''>
>>> re.search(r"\d*","12345")
<_sre.SRE_Match object; span=(0, 5), match='12345'>

在这里插入图片描述

8、\d?:表示匹配0个或者1个
>>> re.search(r"\d?","12345")
<_sre.SRE_Match object; span=(0, 1), match='1'>

在这里插入图片描述

>>> re.search(r"\d*abc","I am 123abc")
<_sre.SRE_Match object; span=(5, 11), match='123abc'>
>>> re.search(r"\d*abc","I am abc")
<_sre.SRE_Match object; span=(5, 8), match='abc'>

在这里插入图片描述

9、*和?的区别
>>> re.search(r"9?","")
<_sre.SRE_Match object; span=(0, 0), match=''>
>>> re.search(r"9?","9")
<_sre.SRE_Match object; span=(0, 1), match='9'>
>>> re.search(r"9?","99")
<_sre.SRE_Match object; span=(0, 1), match='9'>
>>>
>>> re.search(r"9*","")
<_sre.SRE_Match object; span=(0, 0), match=''>
>>> re.search(r"9*","9")
<_sre.SRE_Match object; span=(0, 1), match='9'>
>>> re.search(r"9*","99")
<_sre.SRE_Match object; span=(0, 2), match='99'>
>>> re.search(r"9*","999")
<_sre.SRE_Match object; span=(0, 3), match='999'>

在这里插入图片描述

9、正则的扫描机制

r"\d*a"---->0个、1个或多个的数字后面有至少一个a

“b 1a”—》1a
“b a”—》a
r"\d*"
“b 1a”—>""

10、正则的贪婪性(贪婪匹配)
>>> re.search(r"\d+","a123456b")
<_sre.SRE_Match object; span=(1, 7), match='123456'>
>>>
>>> re.search(r"\d+?","a123456b")
<_sre.SRE_Match object; span=(1, 2), match='1'>

在这里插入图片描述

>>> re.search(r"a\d+?a","a123456a")#?表示匹配到最少可能性的数字,在组合里不是匹配一次
<_sre.SRE_Match object; span=(0, 8), match='a123456a'>
>>> re.search(r"a\da","a123456")#这样匹配不到

在这里插入图片描述

>>> re.search(r"a\d+a","a133444a")
<_sre.SRE_Match object; span=(0, 8), match='a133444a'>
>>> re.search(r"\d+","123")
<_sre.SRE_Match object; span=(0, 3), match='123'>
>>> re.search(r"\d+?","123")
<_sre.SRE_Match object; span=(0, 1), match='1'>
>>> re.search(r"\d*?","123")
<_sre.SRE_Match object; span=(0, 0), match=''>

在这里插入图片描述
难点:
在这里插入图片描述

11、\D表示匹配非数字
>>> re.search(r"\D+","123abc")
<_sre.SRE_Match object; span=(3, 6), match='abc'>
>>> re.search(r"\D+","123!&abc456")
<_sre.SRE_Match object; span=(3, 8), match='!&abc'>

在这里插入图片描述

12、\w:表示数字、大写、小写字母,好像也包含中文_
>>> re.search(r"\w+","12abc千丽!@#")
<_sre.SRE_Match object; span=(0, 7), match='12abc千丽'>

在这里插入图片描述

13、\W:表示取反,表示不匹配数字、大写、小写字母或者中文_
>>> re.search(r"\W+","123abc千丽!@#")
<_sre.SRE_Match object; span=(8, 11), match='!@#'>
>>> re.search(r"\W+","123abc")
>>> re.search(r"\W+","123abc AB千丽")
<_sre.SRE_Match object; span=(6, 7), match=' '>

在这里插入图片描述

14、\s表示匹配空白字符
>>> re.search("\s+","a\t\n\r b")
<_sre.SRE_Match object; span=(1, 5), match='\t\n\r '>

在这里插入图片描述

15、\S表示匹配非空白字符
>>> re.search("\S+","a\t\n\r b")
<_sre.SRE_Match object; span=(0, 1), match='a'>

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值