Python爬虫课--第三节 正则表达式

1 正则表达式的简介

1.1 概念

正则表达式是对字符串操作的⼀种逻辑公式,就是⽤事先定义好的⼀些特定字符、及这些特定字符的组合,组成⼀个“规则字符串”,这个“规则字符
串”⽤来表达对字符串的⼀种过滤逻辑

1.2 正则表达式的应⽤场景

表单验证(例如 : ⼿机号、邮箱、身份证… )
爬⾍

2 正则表达式对Python的⽀持

2.1 普通字符

字⺟、数字、汉字、下划线、以及没有特殊定义的符号,都是"普通字符"。正则表达式中的普通字符,在匹配的时候,只匹配与⾃身相同的⼀个字符。
例如:表达式c,在匹配字符串abcde时,匹配结果是:成功;匹配到的内容
是c;匹配到的位置开始于2,结束于3。(注:下标从0开始还是从1开始,因当前编程语⾔的不同⽽可能不同)

match()函数

  • match(pattern, string, flags=0)
  • 第⼀个参数是正则表达式,如果匹配成功,则返回⼀个match对象,否则返
    回⼀个None
  • 第⼆个参数表示要匹配的字符串
  • 第三个参数是标致位⽤于控制正则表达式的匹配⽅式 如: 是否区分⼤⼩写,多⾏匹配等等
import re

# 正则表达式
pattern = 'pythonn'

s = 'python and java'

result = re.match(pattern,s)

if result:

    print(result)

else:

    print('没有匹配到')
结果
没有匹配到

但是


import re

# 正则表达式
pattern = 'pythonn'

s = 'pythonn and java'

result = re.match(pattern,s)

if result:

    print(result)

else:

    print('没有匹配到')
及结果
<_sre.SRE_Match object; span=(0, 7), match='pythonn'>

然后

import re

# 正则表达式
pattern = 'pythonn'

s = 'pythonn and java'

result = re.match(pattern,s)

if result:

    print(result.group())  # 匹配的那个内容  pythonn
    print(result.start())  # 0
    print(result.end())    # 7
    print(result.span())   # (0, 7)

else:

    print('没有匹配到')

还有


import re

# 正则表达式
pattern = 'pytho'

s = 'pythonn and java'

result = re.match(pattern,s)

if result:

    print(result.group())  # 匹配的那个内容  
    # print(result.start())  # 0
    # print(result.end())    # 7
    # print(result.span())   # (0, 7)

else:

    print('没有匹配到')
结果
pytho

2.2 元字符

正则表达式中使⽤了很多元字符,⽤来表示⼀些特殊的含义或功能
在这里插入图片描述
主要是一个字符

import re
re.match(r'a.c','abc').group()
Out[3]: 'abc'
re.match(r'a.c','aHc').group()
Out[4]: 'aHc'
re.match(r'a.c','a2c').group()
Out[5]: 'a2c'
re.match(r'a|c','a2c').group()
Out[6]: 'a'
re.match(r'a|c','b').group()
Traceback (most recent call last):
  File "D:\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2910, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-7-9b51cc7ff806>", line 1, in <module>
    re.match(r'a|c','b').group()
AttributeError: 'NoneType' object has no attribute 'group'

从前开始匹配,如果前面没有,就报错

re.match(r'a|c','ac').group()
Out[8]: 'a'
re.match(r'a|c','ca').group()
Out[9]: 'c'
re.match(r'a|c','bac').group()
Traceback (most recent call last):
  File "D:\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2910, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-10-2ceb8f2fbfd0>", line 1, in <module>
    re.match(r'a|c','bac').group()
AttributeError: 'NoneType' object has no attribute 'group'
re.search(r'a|b','cba').group()
Out[12]: 'b'
  • [] 匹配字符集中的一个字符,也是最前面的
re.match(r'[abc]','bac').group()
Out[13]: 'b'
re.match(r'[abc]','abac').group()
Out[14]: 'a'
re.match(r'[abc]2','abac').group()
Traceback (most recent call last):
  File "D:\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2910, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-15-1730d91ab1a2>", line 1, in <module>
    re.match(r'[abc]2','abac').group()
AttributeError: 'NoneType' object has no attribute 'group'
re.match(r'速度与激情[12345]','速度与激情3'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值