【发布时间】:2015-09-16 21:43:46
【问题描述】:
signals.Signals$MsgSig:
cmdResponse {
ap {
.....
req {
Id: 192
.......
}
res {
Status: Received
.........
Id: 192
.........
}
...
}
....
}
sysContainer
signals.Signals$MsgSig:
cmdResponse {
ap {
.....
req {
Id: 192
.......
}
res {
Status: VALID
.........
Id: 192
.........
}
...
}
....
}
sysContainer
signals.Signals$MsgSig:
cmdResponse {
ap {
.....
req {
Id: 193
.......
}
res {
Status: Received
.........
Id: 193
.........
}
...
}
....
}
sysContainer
signals.Signals$MsgSig:
cmdResponse {
ap {
.....
req {
Id: 193
.......
}
res {
Status: VALID
.........
Id: 193
.........
}
...
}
....
}
sysContainer
我正在尝试对搜索实施负前瞻。 Signal 从 Signals$MsgSig: 开始,到 sysContainer 结束。我需要根据 IdValue 和 Status 进行过滤。
Status = "VALID"
IdValue = "193"
aFile = File.read('C:\Users\Documents\Application.log')
aFile.match(/(?x)Signals\$MsgSig:\n((?!Signals\$MsgSig:).)*?
Id:\W+#{IdValue}\n((?!Signals\$MsgSig:).)*?sysContainer\s\{/m).to_s
这里我想获取一个特定的 MsgSig:tat 的 Id 值为 192,状态为有效。在上面的正则表达式中,我应该在哪里添加对“状态”的搜索。
如果我添加如下所示的搜索,它将从第一个 MsgSig 与 IdValue 192 匹配。
aFile.match(/(?x)Signals\$MsgSig:\n((?!Signals\$MsgSig:).)*?
Id:\W+#{IdValue}(.*?)autoProgramStatus:\W+#{apStatus}((?! Signals\$MsgSig:).)*?sysContainer\s\{/m).to_s
请让我知道我在这里做错了什么。
【问题讨论】:
标签: ruby regex negative-lookahead