正则表达式 - 删除之前的所有内容并包含当前条件

时间:2021-02-03 17:56:51

标签: python regex

我正在尝试创建一个模式并在可能的情况下删除之前的所有内容,包括该模式。

我的示例文本是:

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 行和它之前的所有内容?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

你可以使用

\A(?:(?!! NVRAM).*\n)*! NVRAM.*\n*
\A(?:[\s\S]*?\n)?! NVRAM.*\n*

参见 regex demo #1regex demo #2

详情

  • \A - 字符串的开始
  • (?:(?!! NVRAM).*\n)* - 零个或多个不以 ! NVRAM 开头的行序列
  • (?:[\s\S]*?\n)? - 一个可选序列(如果以 ! NVRAM 开头的行是第一行,则是必需的)任何零个或多个字符,尽可能少,直到第一个换行符紧随其后的子模式
  • ! NVRAM.* - ! NVRAM 和该行的其余部分
  • \n* - 可选的零个或多个换行符。