正则表达式匹配2次没有点

时间:2016-09-15 14:07:52

标签: regex

示例文字

  

23:00 VPN隧道用户带宽............

     

每日安全报告

     

带宽的SSL-VPN隧道用户........   第10页,共12页

     

VPN使用

     

按带宽划分的站点到站点IPSec隧道

     

     

隧道

     

此报告没有匹配的日志数据

     

带宽的客户端到站点IPSec隧道

     

持续时间

     

流量

     

交通

     

IP

     

此报告没有匹配的日志数据

     

带宽的SSL-VPN隧道用户

     

     

1

     

用户

     

user.z

     

134566

     

admin_ex

     

管理员

     

user.b

     

user.a

     

IP

     

最终报告IP

解析目标

  

user.z

     

134566

     

admin_ex

     

管理员

     

user.b

     

user.a

解决方案的当前状态

我有这个正则表达式:(?<=SSL-VPN Tunnel Users by Bandwidth).*?(?=IP) 并且如果 没有 第一次出现 SSL-VPN隧道用户按Banwidth 字符串,但是当我将其存档时,正则表达式失败,无论如何只得到第二场比赛?

1 个答案:

答案 0 :(得分:1)

您有2次出现SSL-VPN Tunnel Users by Bandwidth - 其中一次是点,另一次是换行。

只需在前瞻中添加换行符:

(?<=SSL-VPN Tunnel Users by Bandwidth\n).*?(?=IP)
                                     ^^

请参阅regex demo

或者,如果在以下位置之后有一个点,则使用否定比赛未通过匹配:

(?<=SSL-VPN Tunnel Users by Bandwidth)(?!\.).*?(?=IP)
                                      ^^^^^^

请参阅another regex demo

如果您可以访问子匹配(组),建议切换到基于正则表达式的捕获组:

^SSL-VPN Tunnel Users by Bandwidth\s+(.*?)\nIP$

请参阅this regex demo