代码之家  ›  专栏  ›  技术社区  ›  PanDe

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

  •  1
  • PanDe  · 技术社区  · 7 年前

    在这里寻找一个快速的答案。

    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 回复  |  直到 7 年前
        1
  •  2
  •   Tim Biegeleisen    7 年前

    如果日志文件中存在的唯一错误标志IP地址是版本号,则可以使用否定的lookback断言来检查:

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

    Demo

    我们还可以用其他方法来表达这个模式。如果感兴趣的IP地址总是跟在正文后面 host ,那么我们可以检查一下。另外,如果前面有其他词覆盖了假标志IP地址的情况,我们可以更新否定的lookback来覆盖这些情况。