正则表达式(Regular,REs or regexes or regex patterns )

. ^  $  *  +  ?  {}  []  \  |  ()

以上都被成为元字符

元字符之 . :  它会匹配除了换行符以外的任何字符,如果设置了re.DOTALL标志,它也将匹配包括换行符在内的任何字符

元字符之[]:可以把所有需要匹配的内容放到[]内,[a-z]表示任何小写字母

元字符之^: [^3]表示会匹配除了‘5’之外的任何字符

元字符之*:用于指定前一个字符匹配零次或多次,比如do*g会破匹配dg,dog,dooog

元字符之+:用于指定前一个字符匹配一次或多次

元字符之?:用于指定前一个字符匹配零次或者一次

元字符之{}:{m,n}指定前一个字符必须匹配m次到n次,{0,} == *,{1,}== +,{0,1}==?,{n}表示前一个字符重复n次

元字符之\:反斜杠会将后面的元字符去除特殊功能,反斜杠+普通字符实现特殊功能

当需要匹配带\的字符串时最好使用原始字符串r'';例如,若要匹配‘\sex’,使用反斜杠就要使用‘\\\\sex’,使用原始字符串r'\\sex'

特殊字符含义
\d匹配任何十进制数字,相当于[0-9]
\D与\d相反,匹配任何非十进制数字的字符,相当于[^0-9]
\s匹配任何空白字符(包括换行符制表符空格),相当于[\t\n\r\f\v]
\S与\s相反
\w匹配任何单词字符
\W与\w相反
\b匹配单词的开始或结束
\B与\b相反

match()判断一个正则表达时是否从开始处匹配一个字符串
search()遍历字符串,找到正则表达式匹配的第一个位置
findall()遍历字符串,找到正则表达式匹配的所有位置,并以列表的形式返回
finditer()遍历字符串,找到正则表达时匹配的所有位置,并以迭代器的形式返回
正则表达式被编译为模式对象
import re
p = re.compile('匹配规则')
>>> p = re.compile('[a-z]+') 
>>> m=p.match('kiss') #也可使用 m=p.search('kiss')
>>> m.group() #返回匹配的字符串
'kiss'
>>> m.start() #返回匹配的开始位置
0
>>> m.end() #返回匹配的结束位置
4
>>> m.span() #返回一个元组表示匹配位置
(0, 4)
>>> 

search()与match()的区别:

>>> import re
>>> p = re.compile('[a-z]+')
>>> m = p.search('<><cat')
>>> m.start()
3
>>> print(p.match('<><cat'))
None
>>> 
标志含义
ASCII,A使得转义符号如\w,\b,\s和\d只能匹配ASCII字符
DOTALL,S使得.匹配任何符号,包括换行符
IGNORECASE,I匹配的时候不区分大小写
LOCALE,L支持当前的语言设置
MULTILINE,M多行匹配,影响^和$
VERBOSE,X(for ‘extended’)启用详细的正则表达时
#加入括号后对字符串分割之后保留分割字符
>>> re.split('\W+','runoob, runoob, runoob.')
['runoob', 'runoob', 'runoob', '']
>>> re.split('(\W+)','runoob, runoob, runoob.')
['runoob', ', ', 'runoob', ', ', 'runoob', '.', '']
>>> 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值