zoukankan      html  css  js  c++  java
  • Python/Shell 正则表达式与运用

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

    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
    os:%s
    blackbord:%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

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

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

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

  • 相关阅读:
    Win10下 Docker Flask实例
    4.1 线性映射的概念
    桥梁的基本组成和分类
    Qt5字符串编码转换学习
    在右键菜单中添加用Jupyter Notebook打开
    左右手(直角)坐标系叉乘计算公式
    __new__方法与单键实例
    向量组的秩
    从线性组合的角度理解三维运算
    Hexo使用小结
  • 原文地址:https://www.cnblogs.com/xudong-bupt/p/7907100.html
Copyright © 2011-2022 走看看