正则表达式:除一个条件外,取所有其他条件

时间:2018-09-27 03:33:28

标签: python regex

在这里寻找快速解答。

我有以下文字:

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,但问题是,捕获组也不好,因为它也占用了方括号。

1 个答案:

答案 0 :(得分:2)

如果您的日志文件中唯一的错误标志IP地址将是版本号,那么您可以使用负向后置断言来检查此内容:

(?<!version":")(\d+\.\d+\.\d+\.\d+)

Demo

我们还可以使用其他方式来表达模式。如果感兴趣的IP地址始终位于文本host之后,那么我们可以检查一下。另外,如果前面还有其他单词表示虚假标记IP地址的情况,我们也可以更新后面的否定字眼以涵盖这些情况。