在这里寻找快速解答。
我有以下文字:
2018-09-15 15:59:41,311 INFO [Timer-0]-dashboard.PSDashboard: getProcessSummary --> processing output line
[32mOk: {"status":200,"name":"xya.com","version":"1.1.2.371","cis":"online","tagline":""}[0m
2018-09-15 15:59:40,106 INFO [Timer-0]-util.SSHUtil: Connecting to host [10.60.9.59] using provided credentials.
2018-09-15 15:59:40,209 INFO [Timer-0]-util.SSHUtil: Connected to host [10.60.9.29] using provided credentials.
2018-09-15 15:59:40,209 INFO [Timer-0]-util.SSHUtil: Connected to host 10.60.9.34 using provided credentials.
我有正则表达式:
[^(?<=version":")(.*)(?="cis)](\d+\.\d+\.\d+\.\d+)
如您所见,我试图避免捕获1.1.2.371
,因为它不是真正的IP,但问题是,捕获组也不好,因为它也占用了方括号。
答案 0 :(得分:2)
如果您的日志文件中唯一的错误标志IP地址将是版本号,那么您可以使用负向后置断言来检查此内容:
(?<!version":")(\d+\.\d+\.\d+\.\d+)
我们还可以使用其他方式来表达模式。如果感兴趣的IP地址始终位于文本host
之后,那么我们可以检查一下。另外,如果前面还有其他单词表示虚假标记IP地址的情况,我们也可以更新后面的否定字眼以涵盖这些情况。