regex - 正则表达式寻找一个基本词(snmp-server)然后它需要拥有所有三个(组视图和主机)
问题描述
我正在尝试制作一个正则表达式来搜索 snmp-server 的配置文件,它需要有一个组视图和一个主机到目前为止我试过
snmp-server(group)(view)(host)
(^snmp-server group)(^snmp-server view)(^snmp-server host)
这一个拉所有三个放它只寻找三个中的一个
snmp-server(group)|(view)|(host)
一个例子
这会通过
snmp-server group
snmp-server view
snmp-server enable
snmp-server host
这会失败
snmp-server group
snmp-server enable
snmp-server host
解决方案
使用捕获组和反向引用,您可以使用此正则表达式:
\A(snmp-server)\s+(group|view|host)\n(?:.+\n)*?\1\s+(?!\2)(group|view|host)\n(?:.+\n)*?\1\s+(?!\2|\3)(group|view|host)
正则表达式详细信息:
\A
: 开始(snmp-server)
snmp-server
:在捕获组 #1 中匹配和分组\s+
: 匹配 1+ 个空格(group|view|host)
:匹配给定的 3 个单词并在组 #2 中捕获\n(?:.+\n)*?
: 匹配换行符后跟 0 行或更多行(惰性)\1\s+
: 使用反向引用匹配snmp-server
,后跟 1+ 个空格(?!\2)
:负前瞻断言我们与第 2 组中捕获的内容不匹配(group|view|host)
:匹配给定的 3 个单词并在第 3 组中捕获\n(?:.+\n)*?
: 匹配换行符后跟 0 行或更多行(惰性)\1\s+
: 使用反向引用匹配snmp-server
,后跟 1+ 个空格(?!\2|\3)
: 否定前瞻断言我们与第 2 组和第 3 组中捕获的内容不匹配(group|view|host)
:匹配给定的 3 个单词并在第 4 组中捕获
推荐阅读
- unity3d - 在同一文件中加载 .unity 后丢失了所有场景
- swiftui - 如何在 SwiftUI 中更改 Divider 的宽度?
- r - knitr - 每页上的底部图形都被裁剪
- java - 无法在 eclipse kepler 上安装 spring tools 4 (sts 4) - 缺少要求
- go - 创建数据结构
- mongodb - 如何在 MongoDB 中聚合列表?
- javascript - React :您可能需要适当的加载器来处理此文件类型,目前没有配置加载器来处理此文件(本地节点模块)
- mysql - mysql动态数据透视表组
- javascript - 在 reactjs 中将对象推送到数组中
- c++ - ifstream 在下一次迭代中不打开文件