首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网络工程师的Regex --在两个分隔符之间找到一个字符串给出的上下文

网络工程师的Regex --在两个分隔符之间找到一个字符串给出的上下文
EN

Stack Overflow用户
提问于 2012-07-04 04:05:43
回答 1查看 313关注 0票数 1

我是一位编程能力有限的网络工程师,我使用一个名为dnGREP的工具在NET4.0中搜索普通文本文件中的文本。作为工作的一部分,我需要做的是找到应用于任何接口配置的命令。

我的想法是试图找到正确的REGEX限制在两个项目。但有几个问题,我正在尝试建立一个有效的REGEX。

从Cisco设备的“显示运行配置”中获取以下字符串:

代码语言:javascript
复制
interface GigabitEthernet0/0/0/1.1982
 ipv4 address 10.111.193.125 255.255.255.252
 ipv4 unreachables disable
 load-interval 30
 dot1q vlan 1982
!
interface GigabitEthernet0/0/0/1.1983
 ipv4 address 10.113.193.125 255.255.255.252
 ipv4 unreachables disable
 load-interval 30
 dot1q vlan 1983
!
interface GigabitEthernet0/0/0/2.1982
 ipv4 address 10.111.193.129 255.255.255.252
 ipv4 unreachables disable
 load-interval 30
 find me
 dot1q vlan 1982
 !    

如您所见,接口配置可以限制为2项。

开始项目:

代码语言:javascript
复制
    interface

结束项目:

代码语言:javascript
复制
 !

给出了一个字符串,我想要一个REGEX,它与接口上下文匹配。

条件:

  • REGEX应该返回由“接口”分隔的接口上下文,直到"!“。
  • REGEX应该打印所有的窗口。

到目前为止这是我的REGEX:

代码语言:javascript
复制
 ^interface([\s\S]*?)find me([\s\S]*?)!

细目:

^接口--“在”接口“是行的开头时开始搜索。” (\s\S*?)--“搜索任何字符,包括新行” 找到我--“找到我是我要找的字符串/命令” (\S*?!)--“继续打印,直到找到!

当然,高于REGEX并不做我期望的事情。它只应返回以下内容:

代码语言:javascript
复制
interface GigabitEthernet0/0/0/2.1982
 ipv4 address 10.111.193.129 255.255.255.252
 ipv4 unreachables disable
 load-interval 30
 find me
 dot1q vlan 1982
 !  

相反,在找到第一个接口之后,它会返回所有内容,这不是我想要的。

我知道为什么会发生这种事,但我不知道如何纠正。

"Regex在找到第一个接口时开始搜索find me,但是如果在到达时没有找到字符串查找me,则应该停止!<代码>E 228声明不匹配<>E 129但是<>E 230它应该持续到文件的末尾,并打印包含字符串E 131查找meE 232的所有接口上下文。“

我希望我的解释是清楚的。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-04 04:15:13

尝试以下正则表达式:

代码语言:javascript
复制
interface\s*(?<text>[^!]+find me[^!]+)(?:!)?

解释:

interface\s* -“接口”一词后面跟着0或更多的空格;

(?<text>[^!]+find me[^!]+) -包含除"!“、1次或多次重复和字符串"find me”以外的任何字符的组text

(?:!)? -匹配"!“字符,但不要捕捉它,0或1重复(以迎合最后一段,如果字符丢失)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11322277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档