我很难找到一个词,这个词一定是在另外两个词之间。
简单地说,我的限制是:
line con开头line的下一次出现结束session-timeout这个词line con和line之间的其他单词。我希望在任何以line con开头、以单词line的下一个实例结尾的文本块上进行匹配,但是只有当单词session-timeout在它们之间时,我才需要它们匹配。
加分,如果你能告诉我如何匹配任何大于10的数字后,session-timeout (例如。session-timeout 12将与之匹配)
我希望它在哪里匹配的一个例子是:
line con 0
session-timeout 14
stopbits 1
line aux 0
stopbits 1
line vty 0 4但是,这不应该是匹配的
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,这就是我希望它停止查找的地方。
任何帮助都将不胜感激!
发布于 2020-10-06 17:49:10
您可以使用
(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。根据您的需求调整捕获组。
https://stackoverflow.com/questions/64228981
复制相似问题