原始的日志信息如下:

RunspaceId         : d3dbe55b-b0c2-48ef-8f49-0f30ebd553aa
ObjectModified     : test
CmdletName         : New-Mailbox
CmdletParameters   : {ResetPasswordOnNextLogon, Alias, Password, UserPrincipalName, Database, SamAccountName, LastName, OrganizationalUnit, 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>[\s\S]*)
(?:ObjectModified     : )(?<ObjectModified>[\s\S]*)
(?:CmdletName         : )(?<CmdletName>[\s\S]*)
(?:CmdletParameters   : )(?<CmdletParameters>[\s\S]*)
(?:ModifiedProperties : )(?<ModifiedProperties>[\s\S]*)
(?:Caller             : )(?<Caller>[\s\S]*)
(?:Succeeded          : )(?<Succeeded>[\s\S]*)
(?:Error              : )(?<Error>[\s\S]*)
(?:RunDate            : )(?<RunDate>[\s\S]*)
(?:OriginatingServer  : )(?<OriginatingServer>[\s\S]*)
(?:Identity           : )(?<Identity>[\s\S]*)
(?:IsValid            : )(?<IsValid>.*)

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

(?:pattern)

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

转载于:https://www.cnblogs.com/jasondan/p/3726119.html

记一次复杂的正则匹配——匹配但不包含相关推荐

  1. 快速解决正则----模糊匹配、字符类、量词

    主体概要 正则表达式是什么 是匹配模式.要么匹配字符.要么匹配位置 内容 掌握字符类和量词就能解决大部分常见正则问题 关键内容:字符组.量词.贪婪.惰性.模糊.横向.纵向.分支.位置 重要的基础   ...

  2. php 正则中文匹配

    汉字一定注意是gbk还是utf8编码 UTF-8匹配:在javascript中,要判定字符串是中文是很简朴的.比如:var str = "php编程";if (/^[\u4e00- ...

  3. 利用正则匹配数字后边的字符_图解正则——字符匹配

    简介 正则表达式是绕不开的,正则的强大是众所周知的,学会它对我们的编程也是有大大的帮助 模糊匹配 正则表达式之所以强大,就要归功于它的模糊匹配,不能可以匹配不同数量的字符串,还可以匹配不同内容的字符串 ...

  4. mysql 替换非中文_mysql中的正则操作 匹配手机号,匹配中文,替换

    mysql中的正则操作 匹配手机号,匹配中文,替换 正则匹配hy_user表内tel字段的电话号码: SELECT * FROM hy_user WHERE tel REGEXP "[1][ ...

  5. NodeJS 正则路由匹配

    NodeJS 正则路由匹配 本文主要记录一下学习中遇到的正则路由匹配问题 const express = require("express"); const app = expre ...

  6. 正则双重过滤 /// splitKey1 第一个正则式匹配 /// splitKey2 匹配结果中再次匹配进行替...

    /// <summary>/// 正则双重过滤/// splitKey1 第一个正则式匹配/// splitKey2 匹配结果中再次匹配进行替换/// </summary>// ...

  7. java 正则 惰性匹配_正则表达式 - 贪婪与非贪婪(惰性)

    使用场景 有时,我们想用正则匹配以某个子串开头,且以某个子串或字符结尾的子字符串,但是结尾的字串或字符在原字符串中出现了多次,但我们只想匹配从开始处到第一次出现的地方,换句话说,想得到开始和结尾之间内 ...

  8. php正则取出后不保留左右,PHP 正则 如何匹配不出现某段字符串的写法!(保留备份)...

    网友cfc4n问及关于(?!)的正则表达式问题.回答之后,顺便总结了一下Perl语言中如何匹配"不出现"某元素,贴在这里. 问题 问题描述 有如下文本,如何使用正则式,将其中 不含 ...

  9. 易语言 正则_匹配空白中间数字

    表达式: [\s]*([\d]+)[\s]* +表示空白中间必定有一个或多个数字 代码 .版本 2.子程序 正则_批量匹配空白中间数字, 整数型, , 本子程序采用[精易编程助手]生成.成功返回匹配的 ...

  10. mysql中的正则操作 匹配手机号,匹配中文,替换

    mysql中的正则操作 匹配手机号,匹配中文,替换 正则匹配hy_user表内tel字段的电话号码: SELECT * FROM hy_user WHERE tel REGEXP "[1][ ...

最新文章

  1. java怎么求两组整数的或集,确定整数是否在具有已知值集的两个整数(包括)之间的最快方法...
  2. 外卖市场的搅屎棍要来了?字节跳动内测“心动外卖”!
  3. 以Spring方式构建企业Java应用程序
  4. 线上BUG 处理并分析原因
  5. 20145228《网络对抗》 后门原理与实践
  6. linux下tab作用的描述?
  7. 可以在搜索中突出显示网页上的多个单词_使用片段嵌入进行文档搜索
  8. 现在的技术人啊,1小时200的活都看不上了吗?
  9. 使用 JavaScript 制作一个可以弹的吉他
  10. 还原html默认打开方式,怎么还原打开方式,详细教您Win10系统下如何还原程序默认打开方式...
  11. 怎样快速将word文档翻译成中文
  12. flask android app socketio加解密 匿名加密聊天室 不被任何官方非官方机构个人监视的匿名聊天室!!! 想聊什么就聊什么!
  13. 日常记录,vue-table表格背景透明
  14. php调试工具win7,xdebug最新版下载
  15. 如何给pdf添加页码?
  16. linux内核编译和安装
  17. window安全小知识1——autorun.inf相关知识
  18. 最新织梦仿冷轩资源网模板(善恶资源网、新版小刀娱乐网模板)
  19. 深度解析:华为海思的不利局面
  20. windows中禁止U盘写入

热门文章

  1. 关于读取配置文件的一个小笔记
  2. 每天一道剑指offer-对称的二叉树
  3. 每天一道剑指offer-从上往下打印二叉树
  4. 用c#语言制作ktv点歌系统,KTV点歌系统的设计与实现的设计和实现(C#,C/S,Access)
  5. 根据用户输入的参数的个数来计算长方形或正方形的面积_小面积(2-4.5㎡)卫生间,怎么做干湿分离?(附:方案+参数+案例)...
  6. redis练习-模拟手机验证码的发送
  7. redis rua解决库存问题_技术架构师总结:Redis分布式锁的问题和解决
  8. liunx上mysql源码安装mysql_搞定linux上MySQL编程(一):linux上源码安装MySQL
  9. java两个数组中不同的数字_【Java】 剑指offer(56-1) 数组中只出现一次的两个数字...
  10. c语言变量按作用域分类,C语言总结之变量的种类