首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有当word包含在约束中时,才匹配,Regex

只有当word包含在约束中时,才匹配,Regex
EN

Stack Overflow用户
提问于 2020-10-06 15:27:41
回答 1查看 93关注 0票数 1

我很难找到一个词,这个词一定是在另外两个词之间。

简单地说,我的限制是:

  • 必须以单词line con开头
  • 必须以单词line的下一次出现结束
  • 在这两者之间必须有session-timeout这个词
  • 还可能包含line conline之间的其他单词。

我希望在任何以line con开头、以单词line的下一个实例结尾的文本块上进行匹配,但是只有当单词session-timeout在它们之间时,我才需要它们匹配。

加分,如果你能告诉我如何匹配任何大于10的数字后,session-timeout (例如。session-timeout 12将与之匹配)

我希望它在哪里匹配的一个例子是:

代码语言:javascript
复制
line con 0
session-timeout 14
stopbits 1
line aux 0
stopbits 1
line vty 0 4

但是,这不应该是匹配的

代码语言:javascript
复制
line con 0
session-timeout 8
stopbits 1
line aux 0
stopbits 1
line vty 0 4
session-timeout 13
line vty 0 5

到目前为止,我有regex表达式(line con)(\s|\S)+?(session-timeout ){1}([0-9])(\s|\S)+?(line),但是如果它与术语中的session-timeout不匹配,它就会忽略第一个line,这就是我希望它停止查找的地方。

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-06 17:49:10

您可以使用

代码语言:javascript
复制
(line con)(?:(?!line con)[\s\S])+?(session-timeout\s+)([1-9][0-9]+)[\s\S]+?(line)

regex演示。详细信息:

  • (line con) -第1组:line con字符串
  • (?:(?!line con)[\s\S])+? -任何字符,一个或多个事件,但尽可能少,不启动line con字符序列。
  • (session-timeout\s+) -第2组:session-timeout字符串和一个或多个空白空间
  • ([1-9][0-9]+) -第3组:来自10和更大的数字(如果您想要允许任何前导零,在[1-9]之前追加0* )
  • [\s\S]+? -任何一个或多个字符,尽可能少
  • (line) -第4组:line

根据您的需求调整捕获组。

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

https://stackoverflow.com/questions/64228981

复制
相关文章

相似问题

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