加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python基础 9.正则

发布时间:2020-12-20 10:18:24 所属栏目:Python 来源:网络整理
导读:9.1 正则 1、判断一个字符串是否匹配给定的格式 ? 从一个字符串中按指定格式提取信息 9.2 re 1、findall方法: 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表 import re #导入re模块, ? a =‘python123pyth

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,match=‘123‘>
?
re.search( " python‘,a)
<_ sre.SRE_ Match object; span=(0,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- ‘)]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读