Python基础 9.正则

一个人想着一个人 提交于 2019-12-01 09:15:25

9.1 正则

1、判断一个字符串是否匹配给定的格式​从一个字符串中按指定格式提取信息

9.2 re

1、findall方法:

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表
  import re  #导入re模块,​  a ='python123python666pyt hon888'​  re. findall('python',a) # 把所符台规则的匹配出来,返回一个列表[ 'python', ' python',' python' ]​  re. findall('123' ,a)  [ '123' ]​  re.findall('999' ,a)  #如果匹配的不存在,则返回一一个空列表[]

2、match方法:

re.match 尝试从字符串的起始位置匹配一个模式,匹配成功 返回的是一个匹配对象(这个对象包含了我们匹配的信息),如果不是起始位置匹配成功的话,match()返回的是空,​注意:match只能匹配到一个
import re .​a ='python123python666python888 "re .match(' python',a)​<_ sre.SRE_Match object; span=(e, 6), match='python" >​re .match( '123' ,a)​»>> re .match( " python123', a)​<_ sre.SRE_ Match object; span=(0, 9), match= ' python123'>l»»> ​bb = re. match('python" ,a)​»> bb.group()      ### 1. ###​>>> bb. span()     ### 2. ###​1.可以通过group()提取匹配到的内容​2.可以通过span()提取匹配到的字符下标

 

3、search方法:

re.search 扫描整个字符串,匹配成功 返回的是一个匹配对象(这个对象包含了我们匹配的信息)​注意:search也只能匹配到一个,找到符合规则的就返回,不会一直往后找

 

re.search('123',a)<_ sre.SRE_ Match object; span=(6, 9), match='123'>​re.search( " python',a)<_ sre.SRE_ Match object; span=(0, 6),match='python'>​re.search('6',a)<_ sre.SRE_ Match object; span=(15, 16), match='6'>​dd = re . search(' python',a)dd. group()'python "​dd.span()(e, 6)

re.match与re.search的区别:

re.match只匹配字符串的开始位置找,如果字符串开始不符合正则表达式,则匹配失败,re.search:匹配整个字符串,如果一直找不到则返回是空的,没有结果

 

9.3 元字符 re.S 匹配换行符

1.单字符匹配 :

字符                  功能                  .                 匹配任意1个字符(除了\n )[]                匹配]中列举的字符\d                匹配数字,即0-9\D                匹配非数字,即不是数字\s                匹配空白,即空格,tab键\S                匹配非空白\w                匹配单词字符,即2-Z、A-Z、0-9、_\W                匹配非单词字符

 

2.代表数量的元字符:

字符                 功能 *             匹配前一个字符出现0次或者无限次,即可有可无 +             匹配前一个字符出现1次或者无限次,即至少有1次?              匹配前一个字符出现1次或者0次,即要么有1次,要么没有 {m}            匹配前一一个字符出现m次{m,}           匹配前一个字符至少出现m次{m,n}          匹配前一一个字符出现从m到n次

 

 

 

3.表示边界的元字符:

字符                     功能^                    匹配字符串开头$                    匹配字符串结尾\b                   匹配一一个单词的边界\B                   匹配非单词边界

 

4.分组匹配

字符                     功能

| 匹配左右任意- -个表达式 (ab) 将括号中字符作为一个分组

 

5.贪婪与非贪婪

正则默认都是用贪婪模式去匹配数据的,就是尽可能多的匹配符合要求的数据,​在非贪婪模式下,始终找最短匹配

 

a ='<html>0008< /html ><td>bbbb</td>'​re. findall(r'<.*>',a)​[' <html>090< /htmlxtd>bbbb</td>']​re. findall(r'<.*?>',a)   #加上?变成非贪婪模式[ "<html>',, " </html>',, '(td>'  .'</td>']​re. findall(r'-(\d+)(.+-)','-123456789-')[(' 12345678', '9-')]​>>> re. findall(r'-(\d+?)(.+-)','-123456789-')[('1'  ,'23456789- ')]

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!