模块的的作用主要是用于字符串和文本处理,查找,搜索,替换等

复习一下基本的正则表达式吧

.:匹配除了换行符以为的任意单个字符

*:匹配任意字符,一个,零个,多个都能匹配得到 俗称贪婪模式

+:匹配位于+之前的一个或者多个字符

|:匹配位于|之前或者之后的字符

^:匹配行首

$:匹配行尾

?:匹配位于?之前的零个或者一个字符,不匹配多个字符

\:表示 \ 之后的为转义字符

[]:匹配[]之中的任意单个字符,[0-9]表示匹配0到9任意一个数字

():将位于()之内的的内容当作一个整体

{}:按{}中的次数进行匹配,100[0-9]{3}表示在100之后任意匹配一个3位数(100-999)

python中以\开头的元字符:

转义字符

含义

\b

匹配单词头或者单词尾

\B

和\b含义相反

\d

匹配任何数字

\D

和\d含义相反,匹配任何非数字

\s

匹配任何空白字符

\S

和\s含义相反,匹配任何非空白字符

\w

匹配任何字母,数字,下划线

\W

匹配任何非字母,数字,下划线

匹配的标志和含义

标志

含义

re.I

忽略大小写

re.L

根据本地设置而更改\w,\W,\b,\B,\s,\S的匹配内容

re.M

多行匹配模式

re.S

使“.”元字符匹配换行符

re.U

匹配Unicode字符

re.X

忽略需要匹配模式中的空格,并且可以使用"#"号注释

文本内容(提取linux下的passwd文件)

1 man:x:6:12:man:/var/cache/man:/bin/nologin

View Code

re模块中有3个搜索函数,每个函数都接受3个参数(匹配模式,要匹配的字符串,进行匹配的标志),如果匹配到了就返回一个对象实例,么有就返会None.

findall():用于在字符串中查找符合正则表达式的字符串,并返回这些字符串的列表

search():搜索整个字符串,返回对象实例

match():只从第一个字符开始匹配,后面的不再匹配,返回对象实例

1 lovelinux@LoveLinux:~/py/boke$ cat text2 man:x:6:12:man:/var/cache/man:/bin/sh3 lovelinux@LoveLinux:~/py/boke$ cat test.py4 #/usr/bin/env python

5 #coding:utf-8

6 importre7 with open('text','r') as txt:8 f =txt.read()9 print re.match('bin',f)10 print re.search('bin',f).end()11 lovelinux@LoveLinux:~/py/boke$ python test.py12 None13 34

14 lovelinux@LoveLinux:~/py/boke$ vim test.py15 lovelinux@LoveLinux:~/py/boke$ python test.py16 None17 <_sre.sre_match object at>

View Code

search()返回是对象实例有2个方法,

start():返回记录匹配到字符的开始索引

end():返回记录匹配到字符的结束索引

1 lovelinux@LoveLinux:~/py/boke$ python test.py2 None3 31

4 34

5 lovelinux@LoveLinux:~/py/boke$ cat test.py6 #/usr/bin/env python

7 #coding:utf-8

8 importre9 with open('text','r') as txt:10 f =txt.read()11 print re.match('bin',f)12 print re.search('bin',f).start()13 print re.search('bin',f).end()

View Code

findall():用于找找匹配的字符,把匹配到的字符作为数组返回

1 #!/usr/bin/env python

2 #coding:utf-8

3 importre4 a = "man x 6 12 man / var /cache/man /bin/nologin"

5 print re.findall('[a-z]{3}\s', a)6

7 输出结果:8 ['man', 'man', 'var', 'man']

View Code

sub():用于替换,接受四个参数,sub(匹配模式,要替换成的内容,进行替换的字符串,最大的替换次数)最后一个为可选参数.返回替换后的字符串

把只有3个字母组成的单词替换成heihei,只替换前3个

1 #!/usr/bin/env python

2 #coding:utf-8

3 importre4 a = "man x 6 12 man / var /cache/man /bin/nologin"

5 print re.sub('[a-z]{3}\s', 'heihei',a,3)6

7 输出结果:8 heiheix 6 12 heihei/ heihei/cache/man /bin/nologin

View Code

split():用于分割字符串,接受3个参数re.split(匹配模式,要分割的字符串,最大的分割次数),最后一个为可选参数,返回分割后的字符串列表

1 #!/usr/bin/env python

2 #coding:utf-8

3 importre4 a = "man x 6 12 man / var /cache/man /bin/nologin"

5 print re.split('a', a)6

7 输出结果:8 ['m', 'n x 6 12 m', 'n / v', 'r /c', 'che/m', 'n /bin/nologin']

View Code

编译正则表达式

compile():编译正则表达式,返回一个正则对象实例,然后通过返回的对象实例对字符串进行查找替换,接受2个参数compile(正则表达式,匹配标志)

例子搜索web日志里面的IP

1 #!/usr/bin/env python

2 #coding:utf-8

3 importre4 logstr = '192.168.1.56 - - [14/Apr/2014:01:33:06 -0400] "GET /favicon.ico HTTP/1.1" 404 571 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36"'

5 r = re.compile(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}')6 printr.findall(logstr)7

8 输出结果:9 ['192.168.1.56']

View Code

python re正则匹配_python re正则表达式模块相关推荐

  1. python re正则匹配_python—RE正则表达式

    re正则表达式 正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 C 编写的 ...

  2. python字符串正则替换_Python用正则表达式进行字符串替换方法

    Python正则表达式在使用中会经常应用到字符串替换的代码.这篇文章主要介绍了Python正则表达式如何进行字符串替换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. Python正则表达式在使用 ...

  3. python正则匹配空格+数字+空格_详解Python中正则匹配TAB及空格的小技巧

    详解Python中正则匹配TAB及空格的小技巧 发布时间:2020-10-15 08:38:48 来源:脚本之家 阅读:94 作者:杰瑞26 在正则中,使用.*可以匹配所有字符,其中.代表除\n外的任 ...

  4. java 正则 空格_java 正则匹配空格字符串 正则表达式截取字符串

    java 正则匹配空格字符串 正则表达式截取字符串 需求:从一堆sql中取出某些特定字符串: 比如配置的sql语句为:"company_code = @cc and project_id = ...

  5. python正则匹配_python 正则表达式详解

    正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能 ...

  6. python re正则查找_python正则表达式 - re

    1,匹配符号 基本元字符 . : 任意字符,除了\n,flags设置为DOTALL(S)可以让.匹配\n |:逻辑或 \:转义 ():捕获组 空白字符 [\b] : 回退 \f : 换页 \n : 换 ...

  7. python 多次匹配_Python学习记录14

    print("#") import re # s = "哈哈2" res = re.search("[0-9]",s) print(res) ...

  8. python总结报告模板_Python中RE模块总结

    Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 Emecs 风格的模式.Emacs 风格模式可读性稍差 ...

  9. Python 的正则匹配

    国庆7天,没有追逐诗和远方, 在公司把python的前置知识理了一下.其中,正则 匹配这块忘记的差不多了,就重新学习了一下. 1. 正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好 ...

最新文章

  1. uncompressing linux .................................................后没反应解决办法
  2. 织梦?php?调用栏目,dedecms列表页内容页模板调用上一个栏目下一个栏目方法
  3. php注册登录遍写入 遍验证,在文件指定行中写入内容的php...-自动注册登录验证机制的php代...-php中出现Undefined index报错的修复方法_169IT.COM...
  4. Java:Java 队列的遍历
  5. AG3 hang after click membership search
  6. spring boot 缓存_Spring Boot 集成 Redis 实现数据缓存
  7. uniapp无法使用substr_关公战秦琼------Excel、SPSS Modler和R的使用对比(下)
  8. 计算机网络教室任课教师登记表,多媒体教室工作计划
  9. 数据科学入门与实战:Matplotlib绘图基础一
  10. java实现通用查询_通用业务引用查询服务实现
  11. a:link a:visited a:hover a:active四种伪类选择器的区别
  12. 一个肉夹馍引起的思考
  13. YOLOX系列一 -- 代码下载以及win10上demo运行
  14. RAID磁盘阵列总结
  15. vue组件之间的数据通信
  16. PCL中3D点云特征描述与提取(二)
  17. Android车载导航的一些困境
  18. 我,35岁大专,高龄入职鹅厂,试用期未过被劝退(分享java面试宝典)
  19. 软件架构-zookeeper之curator详解
  20. 手机游戏修改客户端服务器,游戏服务器 手机客户端

热门文章

  1. python发展前景怎么样-python发展前景怎么样
  2. 李宏毅线性代数笔记5:线性方程组
  3. MATLAB从入门到精通:MATLAB 图形操作
  4. Python爬虫应用实战案例-jsonpath在爬虫中的应用,爬取照片信息
  5. 深度学习核心技术精讲100篇(八)-keras 实战系列之深度学习中的多任务学习(Multi-task learning)
  6. Tableau必知必会之如何用颜色 突显 前N项和后N项
  7. 用Tableau制作滚动时间轴(上)
  8. java web nodejs_我的2013--从java web到nodejs
  9. LeetCode-剑指 Offer 58 - I. 翻转单词顺序
  10. TensorFlow官方入门实操课程-全连接神经网络分类