我正在尝试创建一个模式并在可能的情况下删除之前的所有内容,包括该模式。
我的示例文本是:
Building configuration...
Current configuration : 32546 bytes
!
! Last configuration change at 22:48:59 UTC Wed Jan 6 2021 by bobb
! NVRAM config last updated at 22:35:10 UTC Mon Nov 2 2020 by johns
!
version 16.10
我喜欢删除版本之前的任何内容,我不介意第一个!所以我有下面的获取 NVRAM 线
^! NVRAM.+
现在我的 python/regex 会是什么样子来删除那条 NVRAM 行和它之前的所有内容?
感谢您的帮助
答案 0 :(得分:1)
你可以使用
\A(?:(?!! NVRAM).*\n)*! NVRAM.*\n*
\A(?:[\s\S]*?\n)?! NVRAM.*\n*
参见 regex demo #1 和 regex demo #2。
详情:
\A
- 字符串的开始(?:(?!! NVRAM).*\n)*
- 零个或多个不以 ! NVRAM
开头的行序列(?:[\s\S]*?\n)?
- 一个可选序列(如果以 ! NVRAM
开头的行是第一行,则是必需的)任何零个或多个字符,尽可能少,直到第一个换行符紧随其后的子模式! NVRAM.*
- ! NVRAM
和该行的其余部分\n*
- 可选的零个或多个换行符。