1、re匹配的语法

re.math 从头开始匹配,没有匹配到返回None

re.seach 匹配包含,,没有匹配到返回None

re.findall 把所有匹配到的字符,以列表的形式返回,没有匹配到返回空列表[]

re.splitall 以匹配到的字符当做列表分隔符

re.sub 匹配字符并替换

re.fullmath 全部匹配

s='adds231f'
print(re.match("[0-9]",s))
print(re.search("[0-9]",s))
print(re.findall("[0-9]",s)) 结果:
None
<_sre.SRE_Match object; span=(4, 5), match=''>
['', '', '']

***注意****

match和search一旦匹配成功,就是一个match object对象,而match object对象有以下方法:

group() 返回被 RE 匹配的字符串
start() 返回匹配开始的位置
end() 返回匹配结束的位置
span() 返回一个元组包含匹配 (开始,结束) 的位置
group() 返回re整体匹配的字符串,可以一次输入多个组号,对应组号匹配的字符串

math、seach匹配到后返回的是一个对象,若要获取匹配到的值要取greap()

s='rasfd23fd5'
m=re.match("[0-9]",s)
ss=re.search("[0-9]",s)
if m:
print("math方法:"+m.group())
if ss:
print("search方法:"+ss.group()) 结果:
search方法:2

2、re常用表达式公式

'.' 匹配除\n以外的任意一个字符(从左开始),2个 '.’ 就匹配2个字符

s='rasfd23fd5'
print(re.search('.',s).group())
print(re.search('..',s).group()) 结果:
r
ra

' ^' 匹配字符串开头。在多行模式中匹配每一行的开头

print(re.search('^r','rasfd23fd5'))
print(re.match('r','rasfd23fd5'))
print(re.search('^rs','rasfd23fd5')) 结果:
<_sre.SRE_Match object; span=(0, 1), match='r'>
<_sre.SRE_Match object; span=(0, 1), match='r'>
None

  

'$'匹配字符串末尾,在多行模式中匹配每一行的末尾

print(re.search('d$','rasfdg'))
print(re.search('g$','rasfdg'))
结果:
None
<_sre.SRE_Match object; span=(5, 6), match='g'>

'*'  匹配前一个字符0或多次

print(re.search('a*','rarrdrg')) #要匹配a开关
print(re.search('rar*','rarardrg'))
print(re.search('rar*','rarrdrg'))
print(re.search('rar*','rarrrdrg')) #匹配ra,rar,rarr,rarr,rarrr......等 结果:
<_sre.SRE_Match object; span=(0, 0), match=''>
<_sre.SRE_Match object; span=(0, 3), match='rar'>
<_sre.SRE_Match object; span=(0, 4), match='rarr'>
<_sre.SRE_Match object; span=(0, 5), match='rarrr'>

'+'  匹配前一个字符1或多次

print(re.search('a+','rarrdrg'))
print(re.search('rar+','sraardrg'))
print(re.search('rar+','srardrg'))
print(re.search('rar+','srarrdrg'))
print(re.search('rar+','srarrrdrg')) 结果:
<_sre.SRE_Match object; span=(1, 2), match='a'>
None
<_sre.SRE_Match object; span=(1, 4), match='rar'>
<_sre.SRE_Match object; span=(1, 5), match='rarr'>
<_sre.SRE_Match object; span=(1, 6), match='rarrr'>

'?'  匹配前一个字符1或0次

print(re.search('rar?','sraardrg'))
print(re.search('rar?','srardrg'))
print(re.search('rar?','srarrdrg'))
print(re.search('rar?','sarrdrg')) 结果:
<_sre.SRE_Match object; span=(1, 3), match='ra'>
<_sre.SRE_Match object; span=(1, 4), match='rar'>
<_sre.SRE_Match object; span=(1, 4), match='rar'>
None

'{m}匹配前一个字符m次

print(re.search('a{2}','sraardrg'))
print(re.search('a{2}','srarardrg')) 结果:
<_sre.SRE_Match object; span=(2, 4), match='aa'>
None

'{n,m}匹配前一个字符n到m次

print(re.search('a{1,2}','sraardrg'))
print(re.search('a{1,2}','srarardrg'))
print(re.search('a{1,2}','sraaardrg')) 结果:
<_sre.SRE_Match object; span=(2, 4), match='aa'>
<_sre.SRE_Match object; span=(2, 3), match='a'>
<_sre.SRE_Match object; span=(2, 4), match='aa'>

 '|' 匹配|右边或左边的字符

print(re.search('ar|dr','sraardrg'))
print(re.search('ar|dr','srdddrdrg'))
结果:
<_sre.SRE_Match object; span=(3, 5), match='ar'>
<_sre.SRE_Match object; span=(4, 6), match='dr'>

‘(....)’ 分组匹配,

被括起来的表达式将作为分组,从表达式左边开始没遇到一个分组的左括号“(”,编号+1.
分组表达式作为一个整体,可以后接数量词。表达式中的|仅在该组中有效。

k=re.search('([A-z]+)([0-9]+)','Terry913')
k_group =k.group()
k_groups =k.groups()
print(k_group) #-->Terry913
print(k_groups) #->('Terry', '913')

反斜杠\的作用:

反斜杠后边跟元字符去除特殊功能;(即将特殊字符转义成普通字符)
反斜杠后边跟普通字符实现特殊功能;(即预定义字符)
引用序号对应的字组所匹配的字符串。

\w

匹配字母数字及下划线

\W

匹配非字母数字及下划线

\s

匹配任意空白字符,等价于 [\t\n\r\f].

\S

匹配任意非空字符

\d

匹配任意数字,等价于 [0-9].

\D

匹配任意非数字

\A

匹配字符串开始

\Z

匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串。

\z

匹配字符串结束

\G

匹配最后匹配完成的位置。

\b

匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。

\B

匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。

3 特殊分组

python中re正则表达式的更多相关文章

  1. Python::re 模块 -- 在Python中使用正则表达式

    前言 这篇文章,并不是对正则表达式的介绍,而是对Python中如何结合re模块使用正则表达式的介绍.文章的侧重点是如何使用re模块在Python语言中使用正则表达式,对于Python表达式的语法和详细 ...

  2. 在Python中使用正则表达式同时匹配邮箱和电话并进行简单的分类

    在Python使用正则表达式需要使用re(regular exprssion)模块,使用正则表达式的难点就在于如何写好p=re.compile(r' 正则表达式')的内容. 下面是在Python中使用 ...

  3. python模块 re模块与python中运用正则表达式的特点 模块知识详解

    1.re模块和基础方法 2.在python中使用正则表达式的特点和问题 3.使用正则表达式的技巧 4.简单爬虫例子 一.re模块 模块引入; import re 相关知识: 1.查找: (1)find ...

  4. Python学习-38.Python中的正则表达式(二)

    在Python中,正则表达式还有较其他编程语言有特色的地方.那就是支持松散正则表达式了. 在某些情况,正则表达式会写得十分的长,这时候,维护就成问题了.而松散正则表达式就是解决这一问题的办法. 用上一 ...

  5. Python学习-37.Python中的正则表达式

    作为一门现代语言,正则表达式是必不可缺的,在Python中,正则表达式位于re模块. import re 这里不说正则表达式怎样去匹配,例如\d代表数字,^代表开头(也代表非,例如^a-z则不匹配任何 ...

  6. [Python]网络爬虫(七):Python中的正则表达式教程

    转自:http://blog.csdn.net/pleasecallmewhy/article/details/8929576#t4 接下来准备用糗百做一个爬虫的小例子. 但是在这之前,先详细的整理一 ...

  7. [Python]网络爬虫(七):Python中的正则表达式教程(转)

    接下来准备用糗百做一个爬虫的小例子. 但是在这之前,先详细的整理一下Python中的正则表达式的相关内容. 正则表达式在Python爬虫中的作用就像是老师点名时用的花名册一样,是必不可少的神兵利器. ...

  8. 在python中使用正则表达式(转载)

    https://www.cnblogs.com/hanmk/p/9143514.html 在python中使用正则表达式(一)   在python中通过内置的re库来使用正则表达式,它提供了所有正则表 ...

  9. python中的正则表达式(re模块)

    一.简介 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配.正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎 ...

  10. python中关于正则表达式三

    2015年8月14日 11:10 7.2正则表达式操作 正则表达式使用反斜杠字符'\'来暗示一些特殊的形式或者允许特殊的字符使用但是没有调用它们特殊的意思.在字符串常量中的相同目标的字符的python ...

随机推荐

  1. 精读《C++ primer》学习笔记(第四至六章)

    第四章: 重要知识点: 4.1 基础 函数调用是一种特殊的运算符,它对运算对象的数量没有限制. 重载运算符时可以定义运算对象的类型,返回值类型,但运算对象的个数,运算符的优先级,结合律无法改变. 当一 ...

  2. debian 安装libreoffice6.1 转换pdf

    这个东西能转,但效率不高,我已经用专门的服务器docker,速度很快,直接用curl就能返回 但这里还是记录一下直接用命令调用吧,毕竟有的老的地方这么用 && cd /usr/loca ...

  3. sum(case when ct.tradeTotal >= 0 then 1 else 0 end)的意思

    String hql = "select new com.ks.admin.report.dto.ReportMonthWithDrawalDto(" + "count( ...

  4. C语言volatile关键字的用法

    volatile关键字的意义在于让被关键字修饰的变量每次使用时都重新去主内存里读取变量,而不是从高速缓存去读取. int a = 1; 普通变量定义之后,若要使用它,都会 先把它的值从主内存拷贝到高速 ...

  5. HTTP请求的502、504、499错误

    1.名词解释 502 Bad Gateway:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应(伪响应). 504 Gateway Time-out:作为网关或者代理工作的服务 ...

  6. php中获取当前时间

    因为php种有时区的设置,默认与我们这边差8小时:所以我们直接使用data方法的话,得到的时间是不准确的 所以我们在开头设置时区 //设置时区的方法: date_default_timezone_se ...

  7. python之路——19

    王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594 复习 1.正则表达式 1.字符组 2.元字符 \w \d \s 匹配任意字母数字下划线 数字 空格 \W \ ...

  8. Hashtable与ConcurrentHashMap区别(转)

    转载地址: https://blog.csdn.net/wisgood/article/details/19338693

  9. shell中使用类似Python的参数处理

    params=$* for param in ${params} do name=$() value=$() if [[ "$name" = "run_type" ...

  10. 打包时,node内存溢出问题解决方法

    在使用npm run build打包时,遇到node内存溢出问题. 网上查找到的决绝方案.解决方案一: 安装increase-memory-limit插件,扩大node的内存限制 但是,这个解决方案在 ...