我有一个日志文件,用于记录局域网中计算机的连接断开。我想从日志文件的每一行中提取每台计算机的名称,为此,我正在这样做:(?<=Name:)\w+|(-PC)
目标文本:
`[C417] ComputerName:KCUTSHALL-PC UserID:GO kcutshall Station 9900 (locked) LanId: | (11/23 10:54:09 - 11/23 10:54:44) | Average limit (300) exceeded while pinging www.google.com [74.125.224.147] 8x
[C445] ComputerName:FRONTOFFICE UserID:YB Yenae Ball Station 7C LanId: | (11/23 17:02:00) | Client is connected to agent.`
问题在于某些计算机名称包含-PC
其中,有些则没有。我创建的表达式匹配没有-PC
名称的计算机,但是如果计算机具有-PC
名称,则将其视为单独的匹配项,我不希望这样。简而言之,它给了我3场比赛,但我只想要2场。这就是为什么我在这里需要帮助,我是regex的初学者。
您可以使用
(?<=Name:)\w+(?:-PC)?
细节
(?<=Name:)
-紧接在前面的地方 Name:
\w+
-1个以上的字符(?:-PC)?
-匹配1或0次出现的-PC
子字符串的可选非捕获组。如果您需要匹配PC
整个单词,请考虑使用单词边界,
(?<=Name:)\w+(?:-PC\b)?
请参阅regex演示。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句