python正则表达式笔记

正则表达式是用来筛选数据的 

一种符号匹配一个字符(包括数字、下划线、空格等等)         

原子:基本单位,一段或者一个字符 

\n       换行符\t       制表符
\w     字母、数字、下划线\W除了字母、数字、下划线的其他任一字符
\d      十进制数字 \D除了十进制数字的其他任一字符
\s 匹配一个空格      \S  除了空格的其他任一字符
.        匹配任一字符 ?匹配0或1次前面出现的原子
^表示开始位置     $    表示结尾位置
+匹配1次或1次以上前面出现的原子{n}前面的原子恰好出现n次
{n,}前面的原子至少出现n次{n,m}至少n次,至多m次
I忽略大小写M多行匹配

用法:

import re
re.search(正则表达式,源字符段数据)

安装re模块,用re.search()在源字符段数据中匹配截取符合正则表达式的字符串数据。

import re
a='dhkajkj23ewiej434421kk'
b='kj\d'
c='kj\d\d'
print(re.search(b,a))
print(re.search(c,a))

这里设置了b和c两个正则表达式,

a:源字符串数据

b:'kj\d',表示寻找一段kj加一个数字的字符段

c:'kj\d\d',表示寻找一段kj加两个数字的字符串

结果如下:

1:在a中找到了kj2,位置在第6个开始,第8个结束

2:在a中找到了kj23,位置在第6个开始,第9个结束

使用re.search().group()函数,则可以把匹配的内容提取出来,上述打印内容就会变成

 只有匹配的内容了,十分方便。而且,如果是用括号分开正则表达式匹配了多组数据的话,

group(0):显示全部

group(1):显示第一个括号

group(2):显示第二个括号

以此类推。。。。。。


贪婪模式:使用        *        匹配的是尽量多的数据,但可能不够精确

        re.search( 某 * 某,源字符数据)

懒惰:用        *?        表示匹配一次即可

        re.search( 某 * ?某,源字符数据)

re.match()与 re.search() 用法很像,只是re.match()从待匹配字符的首个字符开始匹配,而 re.search()   可以从任意位置开始匹配。


模式修正符

I        忽略大小写

M        多行匹配

用法:

re.search(正则表达式,源字符数据,re.I)

re.search(正则表达式,源字符数据,re.M)


全局匹配:

        re.compile(正则表达式).findall(源数据)

全局匹配可以匹配出所有满足条件的结果,非常实用!

demo:

把a字符串中的电话号码都提取出来,

import re
a='''座机:021-90989012 地址::上海市浦东新区上海**公司,
座机:0773-7892091 地址:桂林**公司,
座机:0351-7892093 公司地址…'''
b='\d{4}-\d{7}|\d{3}-\d{8}'
c=re.compile(b).findall(a)
print(c)

结果如下:

正则表达式'\d{4}-\d{7}|\d{3}-\d{8}'表示4个数字-7个数字或3个数字-8个数字

通过全局匹配re.compile().fillall()找出了所有号码。

end......

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值