Python正则表达式——重点整理

正则表达式(regular expression)

import re: Python处理正则表达式的模块

re —>reqular expression:通过模糊的方式匹配字符串的内容

注意:正则表达式前最好加上原字符”r”:表示后面跟的字符串只表示字符原始含义

>>> import re
>>> print(r"a\nb")#不加r,会把"\n"当成回车符
a\nb
>>> print("a\nb")
a
b
>>> re.match("a\\b","a\\b")
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> re.match(r"a\\b","a\\b")
<_sre.SRE_Match object; span=(0, 3), match='a\\b'>

1. 正则表达式—作用:

  • 爬虫:
    拿到网页数据后,想使用获取网页里面特定的一些数据。
  • 日志分析:
    使用正则从日志中提取你要的数据,然后在做一些统计工作文本文件中的数据统计工作。

2. 正则表达式—特殊表达式含义:

一般字符(匹配自身):

#.(点):匹配除”\n”以外的任意一个字符,但是在DOTALL模式中可以匹配换行符

>>> re.match("a.c","abc")
<_sre.SRE_Match object; span=(0, 3), match='abc'>
>>> re.match("a.c","a c"
<_sre.SRE_Match object; span=(0, 3), match='a c'>
>>> re.match("a.c","a1c")
<_sre.SRE_Match object; span=(0, 3), match='a1c'>
>>> re.match("a.c","a\nc")#不能匹配\n,返回None
>>>

#\(反斜杠):转义一个特殊的字符,使这个字符表示原来字面上的意思。
如"$",表示原字符$,而不是正则表达式中表示匹配行尾的意思。

>>> re.match(r"a\"c","a\"c")
<_sre.SRE_Match object; span=(0, 3), match='a"c'>
#不写\,会出错。因为引号都是成对出现。加上\,可以把引号的分隔作用取消了,当成了一个普通字符
>>> re.match(r"a"c","a"c")
  File "<stdin>", line 1
    re.match(r"a"c","a"c")
                 ^
SyntaxError: invalid syntax
  • 预定义字符集(可以写在[]中)
    #[…](方括号):匹配括号中出现的任意单个字符(或的关系)
>>> re.match(r"[abcd]","ab1234")
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> re.match(r"[abcd]","bb1234")
<_sre.SRE_Match object; span=(0, 1), match='b'>
>>> re.match(r"[abcd]","cb1234")
<_sre.SRE_Match object; span=(0, 1), match='c'>
#[a-zA-Z0-9]表示范围是大小写字母+数字
>>> re.match(r"[a-zA-Z0-9]","cb1234")
<_sre.SRE_Match object; span=(0, 1), match='c'>
>>> re.match(r"[a-zA-Z0-9]","Cb1234")
<_sre.SRE_Match object; span=(0, 1), match='C'>
>>> re.match(r"[a-zA-Z0-9]","1234")
<_sre.SRE_Match object; span=(0, 1), match='1'>

#[^…]:不匹配方括号中列出的单个字符(注意只能针对单个字符)

>>> re.match(r"[^abc]","a1234")
>>> re.match(r"[^abc]","b1234")
>>> re.match(r"[^abc]","c1234")
>>> re.match(r"[^abc]","d1234")
<_sre.SRE_Match object; span=(0, 1), match='d'>
>>> re.match(r"[^abc]","1234")
<_sre.SRE_Match object; span=(0, 1), match='1'>
>>> re.match(r"[^abc]"," 1234")
<_sre.SRE_Match object; span=(0, 1), match=' '>
>>> re.match(r"[^abc]","\n1234")
<_sre.SRE_Match object; span=(0, 1), match='\n'>

>>> re.search(r"[^abc]","\n1234")
<_sre.SRE_Match object; span=(0, 1), match='\n'>
>>> re.search(r"[^abc]","a1234")
<_sre.SRE_Match object; span=(1, 2), match='1'>
>>> re.search(r"[^abc]","abc234")
<_sre.SRE_Match object; span=(3, 4), match='2'>
>>>

#^在[]外面表示匹配字符串开头

#表示必须以abc开头
>>> re.match(r"^abc","abc234")
<_sre.SRE_Match object; span=(0, 3), match='abc'>
>>> re.search(r"^[abc]","abc234")
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>>

#\d 和\D:表示数字和非数字

>>> re.match(r"\d","12")
<_sre.SRE_Match object; span=(0, 1), match='1'>
>>> re.match(r"\d","a12")
>>> re.match(r"\d","012")
<_sre.SRE_Match object; span=(0, 1), match='0'>
>>> re.match(r"\D","a012")
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> re.match(r"\D"," 012")
<_sre.SRE_Match object; span=(0, 1), match=' '>
>>> re.match(r"\D","0 12")
>>> re.match(r"\D"," 0 12")
<_sre.SRE_Match object; span=(0, 1), match=' '>

#\s 和\S 表示:匹配任意一个空白字符:[<空格>\t\r\n\v\f] 和 匹配任意一个非空白字符

>>> re.match(r"\s"," 012")
<_sre.SRE_Match object; span=(0, 1), match=' '>
>>> re.match(r"\s","\n012")
<_sre.SRE_Match object; span=(0, 1), match='\n'>
>>> re.match(r"\s","\t012")
<_sre.SRE_Match object; span=(0, 1), match='\t'>
>>> re.match(r"\s","\r012")
<_sre.SRE_Match object; span=(0, 1), match='\r'>
>>> re.match(r"\s","\f012")
<_sre.SRE_Match object; span=(0, 1), match='\x0c'>
>>> re.match(r"\s","012")
>>> 
>>> re.match(r"\S","012")
<_sre.SRE_Match object; span=(0, 1), match='0'>
>>> re.match(r"\S","a012")
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> re.match(r"\S","*012")
<_sre.SRE_Match object; span=(0, 1), match='*'>
>>> re.match(r"\S"," 012")
>>>

#\w 和 \W 表示:匹配字母,数字,下划线,中文 和 非字母,数字,下划线,中文

>>> re.match(r"\w","012")
<_sre.SRE_Match object; span=(0, 1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值