博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式与运用
阅读量:6548 次
发布时间:2019-06-24

本文共 1306 字,大约阅读时间需要 4 分钟。

正则表达式用的地方是很多的。比如字符串处理过程中。最近遇到记录一下。

1. 比如在shell中

1 #!/bin/bash2 3 str="date:2017-11-28 os:centos blackbord:blog"4 5 echo $str | grep centos --color6 echo $str | grep -oE centos --color7 #组的使用8 echo $str | sed -rne 's/.*(date:[0-9]{4}-[0-9]{2}-[0-9]{2}).*(blackbord:[a-z]+).*/group:\1 group:\2/p'

执行输出:

1 date:2017-11-28 os:centos blackbord:blog2 centos3 group:date:2017-11-28 group:blackbord:blog

2. Python中

1 #coding=utf-8 2 import re 3  4 str1="line:20 date(2017-11-28) os:centos blackbord[blog] last" 5  6 matchobj = re.search("(date\(\d+-\d+-\d+\)).*(os:[a-z]+).*(blackbord\[[a-z]+\])", str1) 7 if matchobj: 8     num = len(matchobj.groups()) 9     print "match_len:" + str(num)10     print matchobj.groups()11 12     date = matchobj.group(1)    #date(2017-11-28)13     date = date[5:len(date)-1]14     os = matchobj.group(2)  #os:centos15     os = os[3:]16     blackbord = matchobj.group(3)   #blackbord[blog]17     blackbord = blackbord[10:len(blackbord) -1 ]18     print("date:%s\nos:%s\nblackbord:%s" % (date, os, blackbord))19 else:20     print "not match str1"

 输出:

1 match_len:32 ('date(2017-11-28)', 'os:centos', 'blackbord[blog]')3 date:2017-11-284 os:centos5 blackbord:blog

 

例子中的正则表达式多次使用到了捕获组,主要是方便查找与输出。() 每个括号是一个捕获组。

更多关于捕获组的用法可以参考网上其他博客,

如: http://blog.csdn.net/lxcnn/article/details/4146148

 

你可能感兴趣的文章
项目启动前的准备工作(随笔一)
查看>>
海量Web日志分析 用Hadoop提取KPI统计指标
查看>>
关于失败
查看>>
Oracle 事务的開始与结束
查看>>
Mac下eclipse安装SVN插件
查看>>
“神一般存在”的印度理工学院到底有多牛?
查看>>
Hadoop2.2.0安装配置手册!完全分布式Hadoop集群搭建过程~(心血之作啊~~)
查看>>
《大话重构》
查看>>
一起谈.NET技术,WPF与混淆器
查看>>
一起谈.NET技术,C#面向对象设计模式纵横谈:Singleton 单件
查看>>
Mozilla公布Firefox 2011年开发计划
查看>>
Java访问类中private属性和方法
查看>>
UIImage扩展方法(Category)支持放大和旋转
查看>>
可复用的WPF或者Silverlight应用程序和组件设计(3)——控件级别
查看>>
hibernate的一些缺陷(转)
查看>>
An easy to use android color picker library
查看>>
忘记Django登陆账号和密码的处理方法
查看>>
C++的头文件和实现文件分别写什么
查看>>
C语言 · 学生信息(P1102)
查看>>
做项目,还是标准点好(对象命名标准),呵呵
查看>>