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- ‘)]
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did170538