Python/Shell 正则表达式与运用
正则表达式用的地方是很多的。比如字符串处理过程中。最近遇到记录一下。
1. 比如在shell中
#!/bin/bash str="date:2017-11-28 os:centos blackbord:blog" echo $str | grep centos --color
echo $str | grep -oE centos --color
#组的使用
echo $str | sed -rne 's/.*(date:[0-9]{4}-[0-9]{2}-[0-9]{2}).*(blackbord:[a-z]+).*/group:\1 group:\2/p'
执行输出:
date:-- os:centos blackbord:blog
centos
group:date:-- group:blackbord:blog
2. Python中
#coding=utf-8
import re str1="line:20 date(2017-11-28) os:centos blackbord[blog] last" matchobj = re.search("(date\(\d+-\d+-\d+\)).*(os:[a-z]+).*(blackbord\[[a-z]+\])", str1)
if matchobj:
num = len(matchobj.groups())
print "match_len:" + str(num)
print matchobj.groups() date = matchobj.group(1) #date(2017-11-28)
date = date[5:len(date)-1]
os = matchobj.group(2) #os:centos
os = os[3:]
blackbord = matchobj.group(3) #blackbord[blog]
blackbord = blackbord[10:len(blackbord) -1 ]
print("date:%s\nos:%s\nblackbord:%s" % (date, os, blackbord))
else:
print "not match str1"
输出:
match_len:
('date(2017-11-28)', 'os:centos', 'blackbord[blog]')
date:--
os:centos
blackbord:blog
例子中的正则表达式多次使用到了捕获组,主要是方便查找与输出。() 每个括号是一个捕获组。
更多关于捕获组的用法可以参考网上其他博客,
如: http://blog.csdn.net/lxcnn/article/details/4146148
Python/Shell 正则表达式与运用的更多相关文章
- linux shell 正则表达式(BREs,EREs,PREs)差异比较
linux shell 正则表达式(BREs,EREs,PREs)差异比较 则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符 串的单个字符串.在很多文本编辑器或其他工具里 ...
- Python shell对比
对Python.shell的一些思考 如果使用python去写脚本来处理日常事务的话,相对于shell是一件比较麻烦的事情,因为我可以使用shell在花费更少的时间内,比较熟练地使用awk.sed和g ...
- linux shell 正则表达式(BREs,EREs,PREs)的比较
原文 : linux shell 正则表达式(BREs,EREs,PREs)差异比较 在使用 linux shell的实用程序,如awk,grep,sed等,正则表达式必不可少,他们的区别是什么 ...
- Shell 正则表达式详解
Shell 正则表达式 什么是正则表达式? 正则表达式在每种语言中都会有,功能就是匹配符合你预期要求的字符串. 为什么要学正则表达式? 在企业工作中,我们每天做的linux运维工作中,时刻都会面对大量 ...
- [python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】
[python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pytho ...
- Python 进阶 - 正则表达式
1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十 ...
- python study - 正则表达式
第 7 章 正则表达式 7.1. 概览 7.2. 个案研究:街道地址 7.3. 个案研究:罗马字母 7.3.1. 校验千位数 7.3.2. 校验百位数 7.4. 使用 {n,m} 语法 7.4.1. ...
- ipython, 一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数
一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数. 若用的是fish s ...
- python使用正则表达式文本替换
2D客户端编程从某种意义上来讲就是素材组织,所以,图片素材组织经常需要批量处理,python一定是最佳选择,不管是win/linux/mac都有一个简单的运行环境 举两个应用场景: 如果不是在某个文件 ...
随机推荐
- JAVA 类和对象基础知识详解
/*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 1978702969@qq.com*/ 和C++一样,JAVA也是一门面向对象的语言,其基础和核心是类和对象.而面向对象的思想是来源与显示生 ...
- 捕获程序异常之onerror
问题描述:html5页面在电脑上打开,功能正常,没有报错,一旦嵌进微信或者APP,页面就卡住了,不好排查js问题. 预期结果:手机微信页面功能失效时,开发人员在console面板能明确看到出错信息,出 ...
- yield, async
yield实现斐波那契序列: import sys, time def fib(): a,b,c = 0,1,0 while True: yield c a,b = b, c c = a + b if ...
- 20172308 实验四《Java面向对象程序设计 》实验报告
20172308 2017-2018-2 <程序设计与数据结构>实验四报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 周亚杰 学号:20172308 实验教师:王 ...
- Spring使用注解方式注入多例的方式
目前Spring+Netty的开发方式这么火热,想把Netty注册成Spring组件就一定得用多例的方式,我不由得想吐槽明明这么常见的需求网上相关博客都少的很,这里给出Spring使用注解注入多例的方 ...
- 跟着老王学Python
亲爱的朋友: 欢迎你!很高兴能在这里见到你,你能来到这里说明你真的很喜欢python,很想把python给学好!我觉的你很幸运,开始我学python的时候比较少资料,学起来也比较头疼,现在随着 ...
- Windows访问Linux的Ext4格式分区
Ext2Fsd是Windows下一套很实用的Driver,虽然名称是ext2fsd但ext3/ext4都可读取,安装完成后电脑便可直接认得ext格式扇区 虽然官方介绍只能支持到Windows 8,但实 ...
- Overclock STM32F4 device up to 250MHz
http://stm32f4-discovery.com/2014/11/overclock-stm32f4-device-up-to-250mhz/ Let’s test what STM32F4x ...
- Promise,Generator(生成器),async(异步)函数
Promise 是什么 Promise是异步编程的一种解决方案.Promise对象表示了异步操作的最终状态(完成或失败)和返回的结果. 其实我们在jQuery的ajax中已经见识了部分Promise的 ...
- Lucene 3.0 输出相似度
http://www.cnblogs.com/ibook360/archive/2011/10/19/2217638.html Lucene3.0之结果排序(原理篇) 传统上,人们将信息检索系统返回结 ...