一.re模块

  正则表达式时计算机科学的一个概念,正则表达式通常被用来检索,替换那些符合某个模式的文本,大多数程序设计语言都支持利用正则表达式进行字符串操作.

  正则就是用一些具有特殊含义的符号组合到一起来描述字符或者字符串的方法,或者说正则就是用来描述一类事物的规则.它内嵌在python中,并通过re模块来实现,正则表达式模式被编译成一系列的字节码,然后由C编写的匹配引擎执行.re模块的作用是对字符串进行过滤,在一字符串中如果想要找到想要得到的内容就需要告知其过滤规则,这个过滤规则就是正则表达式.

常用匹配模式:

  

import re
# 待处理字符串
str1 = 'abc-d$eaf+ \n 1*/__g12a3'
# findall()在字符串中查找所有满足条件的
# \w查找字母数字下划线 \W查找非字母数字下划线
print(re.findall('\w',str1))
print(re.findall('\W',str1)) # \s查找所有不可见字符 \S查找所有可见字符
print(re.findall('\s',str1))
print(re.findall('\S',str1)) # \d查找任意数字 \D查找任意非数字
print(re.findall('\d',str1))
print(re.findall('\D',str1)) # \n
print(re.findall('\n',str1)) # .匹配除了换行符的任意字符
print(re.findall('.',str1)) # \s\w\d 都是匹配单个字符
# 匹配重复字符* + ? {}
# *前面的表达式匹配0次或多次
print(re.findall('\w\d*',str1)) # +前面的表达式匹配1次或多次
print(re.findall('\d+','1 11 asf 2')) # ?前面的表达式匹配1次或0次
print(re.findall('\d?','1 111')) # {m,n}最少m次,最多n次
print(re.findall('\d{1,3}','1 12111'))
#{m}必须是m次
print(re.findall('[a-z]{3}','aaa aa a aa aaa aaaa')) # 从字符中找到左右的0或1或2
# | 匹配范围
print(re.findall('0|1|2','123af45ad60d21'))
# []字符集合 中括号中的符号不是整体是单个字符
print(re.findall('[012]','123af45ad60d21'))
# 在范围匹配时使用脱字符表示取反
print(re.findall('[^0-9]','123af45ad60d21'))
# 请找出所有的数字0-9和字母a-z A-Z 注意 减号只有在两个字符中间才有范围的意思
print(re.findall('[0-9a-zA-Z]','123+_lk#$a')) # ^ 匹配行首
print(re.findall('^h','hellohh'))
# $ 匹配行尾 注意$写在表达式的后面
print(re.findall('ha$','hellohha')) # \b匹配单词末尾
print(re.findall(r'h\B','elloh wohrld okhi')) # 贪婪匹配 * +
# 会一直匹配到不满足条件为止 用问好来阻止贪婪匹配(匹配最少满足条件的字符数)
print(re.findall('\w*?','sfasdefd')) src = "<img src='www.baidu.jpg'><img src='www.baidu1.jpg'><img src='www.baidu2.jpg'>"
# ()用于给正则表达式分组(group) 不会改变原来的表达式逻辑意义
# 优先取出括号内的内容 ?:取消括号的优先级
print(re.findall("src='(.+?)'",src))

二.subprocess模块

  subprocess模块是python2.4中新增的一个模块,它允许你生成新的进程,连接到它们的in/out/err管道,并获取他们的返回码.

  subprocess模块中常用函数:

    subprocess.run()      Python 3.5中新增的函数。执行指定的命令,等待命令执行完成后返回一个包含执行结果的CompletedProcess类的实例

    subprocess.call()      执行指定的命令,返回命令执行状态,其功能类似于os.system(cmd)。

    subprocess.Popen()  该类用于在一个新的程序中执行一个子程序.上面的函数都是基于subprocess.Popen类实现的

  实例代码:

import subprocess
res = subprocess.run('tasklist',shell=True,stdout=subprocess.PIPE)
print(res.stdout.decode('gbk')) print(res.stderr)
#
res = subprocess.call('tasklist',shell=True)
print(res)
# 第一个进程a读取tasklist的内容 将数据交给另一个进程b 另一个进程b将数据写到文件中
res1 = subprocess.Popen('tasklist',stdout=subprocess.PIPE,shell=True,stderr=subprocess.PIPE)
res2 = subprocess.Popen('findstr cmd',stdout=subprocess.PIPE,shell=True,stderr=subprocess.PIPE,stdin=res1.stdout)
print(res2.stdout.read().decode('gbk'))

最新文章

  1. 关于Windows高DPI的一些简单总结
  2. 清北学堂模拟day4 捡金币
  3. SalesForce 入门
  4. C# 程序开始主要是写类和方法 的基本步骤和调用方法
  5. 《Thinking in C++》学习笔记(一)【第二章】
  6. Drupal如何实现类的自动加载?
  7. suse linux 编译安装Apache时报“APR NOT FOUND”的解决方法
  8. [Reactive Programming] Async requests and responses in RxJS
  9. Common Subsequence
  10. AprioriTID algorithm
  11. C#编辑基础笔记
  12. Css Secret 案例全套
  13. 解决 Visual Studio 点击添加引用无反应的问题
  14. 【洛谷P1516】青蛙的约会
  15. poj1207 3n+1 problem
  16. Android 开发 MaterialDialog框架的详解
  17. 汇编语言--微机CPU的指令系统(五)(算术运算指令)
  18. [c/c++] programming之路(12)、循环结构
  19. nodejs读取json文件,写入mongodb数据库
  20. java 、HashMap 和单例

热门文章

  1. CF959C Mahmoud and Ehab and the wrong algorithm 构造
  2. 5.Min Stack(能返回最小数的栈)
  3. uwsgi01---uwsgi文件
  4. leecode第三题(无重复字符的最长子串)
  5. sharepoint_study_6
  6. 关于Django在写小项目的一些小注意事项
  7. k2安装LEDE
  8. Photoshop入门教程(六):通道
  9. bootstrap多选框
  10. C实现shell管理的一个例子