记一次复杂的正则匹配——匹配但不包含

原始的日志信息如下:

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>[\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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值