You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写正则表达式提取Cisco配置中权限不为0或1的用户条目

原正则存在的问题

你写的正则主要有两处核心错误导致无法命中预期结果:

  • 负向先行断言的判断逻辑错误:(?!([01]))仅会检查privilege 之后紧邻的第一个字符是否为0/1,当权限等级是两位及以上数值时(比如你示例中的15,首字符是1),会被直接误判为要排除的对象,导致符合要求的高权限用户被过滤。
  • 未预留权限值的匹配位置:负向先行断言属于零宽断言,仅做逻辑判断不会实际消费匹配字符,你在断言后直接拼接( password 7),相当于要求privilege 之后直接跟上 password 7,完全跳过了中间的权限等级字段,自然无法匹配。

修正后的正则

^username.*privilege (?!(0|1)\s)\d+ password 7.*$

规则说明:

  • ^ 匹配行开头,避免命中行中间出现的无关匹配项
  • username.*privilege 匹配从行首到privilege 的固定前缀内容
  • (?!(0|1)\s) 负向先行断言,判断privilege 之后紧跟的内容不是单独的0或1加空格,避免误杀两位及以上以1开头的合法权限值(比如15、12等)
  • \d+ 匹配实际的权限等级数值,消费这部分字符
  • password 7.*$ 匹配后续的密码字段直到行结尾

测试效果:

  • 可匹配:username myuser privilege 15 password 7 5345345345
  • 可匹配:username admin privilege 2 password 7 xxxx
  • 不匹配:username test privilege 0 password 7 xxxx
  • 不匹配:username test privilege 1 password 7 xxxx

内容的提问来源于stack exchange,提问作者Andres Aguado

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:36:03