zoukankan      html  css  js  c++  java
  • 记一次复杂的正则匹配——匹配但不包含

    原始的日志信息如下:

    RunspaceId         : d3dbe55b-b0c2-48ef-8f49-0f30ebd553aa
    ObjectModified     : test
    CmdletName         : New-Mailbox
    CmdletParameters   : {ResetPasswordOnNextLogon, Alias, Password, UserPrincipalName, Database, SamAccountName, LastName, Organizat
                         ionalUnit, Initials, FirstName, Name}
    ModifiedProperties : {}
    Caller             : TEst.Admin
    Succeeded          : True
    Error              : 
    RunDate            : 2014/3/24 10:01:49
    OriginatingServer  : TEST(15.00.0775.022)
    Identity           : RgAAAABRB0jEnPi7SZ46Wv3WKUahBwAfCsv7xh/zT66wYhIbLojWAAAAb1GrAABdb7eQEuSqQ5aHAWignShgAAAAACmAAAAJ
    IsValid            : True

    现需要将以上文本以:为分隔提取后面的值信息,因为开发的通用日志解析工具是通过正则来提取数据的,这样就需要把这个数据块中特征通过正则表示出来,然后提取特征之后的数据,研究了大半天后来终于给写出来了,好费劲,正则不熟啊,记录一下:

    (?:RunspaceId         : )(?<RunspaceId>[sS]*)
    (?:ObjectModified     : )(?<ObjectModified>[sS]*)
    (?:CmdletName         : )(?<CmdletName>[sS]*)
    (?:CmdletParameters   : )(?<CmdletParameters>[sS]*)
    (?:ModifiedProperties : )(?<ModifiedProperties>[sS]*)
    (?:Caller             : )(?<Caller>[sS]*)
    (?:Succeeded          : )(?<Succeeded>[sS]*)
    (?:Error              : )(?<Error>[sS]*)
    (?:RunDate            : )(?<RunDate>[sS]*)
    (?:OriginatingServer  : )(?<OriginatingServer>[sS]*)
    (?:Identity           : )(?<Identity>[sS]*)
    (?:IsValid            : )(?<IsValid>.*)

    最终通过正则的组名去获取匹配上的信息就可以了。

    (?:pattern)

    匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。这对于用“or”字符 (|) 组合模式部件的情况很有用。例如,'industr(?:y|ies) 是比 'industry|industries' 更经济的表达式。

  • 相关阅读:
    尚硅谷《全套Java、Android、HTML5前端视频》
    OCM 学习练习题目
    本文转自 MyEclipse 2015反编译插件安装
    关闭VirtualBox虚拟机的时钟同步
    Oracle数据库的状态查询
    ORA-00845 MEMORY_TARGET not supported on this system 的解决
    Ehcache
    Oracle 列转行函数 Listagg()
    oracle数据库定时任务dbms_job的用法详解
    MySQL 处理海量数据时的一些优化查询速度方法
  • 原文地址:https://www.cnblogs.com/jasondan/p/3726119.html
Copyright © 2011-2022 走看看