本文共 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