正则表达式:删除 STRING 之间的所有行,包括 STRING,但保留上面的行

正则表达式:删除 STRING 之间的所有行,包括 STRING,但保留上面的行

我正在尝试使用正则表达式从列表中获取对象名称。所有项目的名称下方都有“Type:”,因此我尝试使用它。

该列表大致如下:

Example Object
Type: Example

Description

More Description

Another Object
Type: Test

Description

我希望输出是:

Example Object

Another Object

我对正则表达式还不熟悉,所以不知道接下来该怎么做。如果有人能解释一下他们的正则表达式代码是如何工作的,那就太好了。

现在我对这个网站有了更好的了解,请进行编辑:我一直在尝试学习语法,并找到了一段成功定位该行的代码片段。(?-is)^(.*\R){1}(?=.*Type:)来自这里。(我不知道 {1} 之前的语法是如何工作的,有人可以解释一下吗?)我尝试修改此代码,但结果它不再起作用,所以我有点卡住了。

答案1

  • Ctrl+H
  • 找什么:^((.+\R)Type:)[\s\S]+?(?=(?1)|\z)
  • 用。。。来代替:$2
  • 打钩 环绕
  • 选择 正则表达式
  • 取消勾选 . matches newline
  • Replace all

解释:

^               # beginning of line
    (               # group 1
        (               # group 2
            .+              # 1 or more any character but newline
            \R              # any kind of linebreak
        )               # end group 2
        Type:           # literally
    )               # end group 1
    [\s\S]+?        # 1 or more any character, not greedy
    (?=             # positive lookahead, make sure  we have after:
        (?1)            # same pattern as defined for group 1
      |               # OR
        \z              # end of file
    )               # end lookahead

替代品:

$2          # content of group 2

截图(之前):

在此处输入图片描述

截图(之后):

在此处输入图片描述

相关内容