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

  • 相关阅读:
    思考-少写代码
    app上传 那些事儿!
    vs2010 找不到本地服务器
    如何成为一名优秀得程序员
    python成功之路,Day2-判断和循环语句
    python成功之路,Day1-发展历史
    ES6学习笔记2-字符串扩展
    ES6学习笔记1-解构赋值
    数组的方法
    ES6
  • 原文地址:https://www.cnblogs.com/xudong-bupt/p/7907100.html
Copyright © 2011-2022 走看看