Python/Shell 正则表达式与运用分析

阿里 阅读:143 2020-10-19 15:28:19 评论:0

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

1. 比如在shell中

1 #!/bin/bash 
2  
3 str="date:2017-11-28 os:centos blackbord:blog" 
4  
5 echo $str | grep centos --color 
6 echo $str | grep -oE centos --color 
7 #组的使用 
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:blog 
2 centos 
3 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:centos 
15     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:3 
2 ('date(2017-11-28)', 'os:centos', 'blackbord[blog]') 
3 date:2017-11-28 
4 os:centos 
5 blackbord:blog

 

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

标签:linux
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
排行榜
关注我们

扫一扫关注我们,了解最新精彩内容