使用notepad ++删除除特定单词之外的所有条目

时间:2013-11-16 19:44:28

标签: regex notepad++

我有一个包含我需要保留的ID的文本文件。该文件还包含我需要删除的许多其他数据,但它不是以分隔或固定宽度格式。所以我想知道是否有一种方法可以使用Notepad ++中的查找/替换功能来删除ID以外的所有内容? ID号本身以GO开头(例如GO:000382)。我试图实施建议here

没有成功,但是我不确定我是否正确实施。我正在使用替换功能

find = ^.*GO ([0-9] +).*$ and replace =  \1. 

非常感谢任何帮助。

数据看起来像这样

GO:0043894  :   acetyl-CoA  synthetase  acetyltransferase   activity    [show   def]
Query   matches synonym "Pat    enzyme" [exact  synonym]

molecular   function

8821    gene    products
view    in  tree
GO:0019899  :   enzyme  binding [show   def]    molecular   function

240 gene    products
view    in  tree
GO:0000307  :   cyclin-dependent    protein kinase  holoenzyme  complex [show   def]
Query   matches synonym "CDK    holoenzyme" [exact  synonym]

我想回来的是

GO:0043894
GO:0019899
GO:0000307

3 个答案:

答案 0 :(得分:1)

(?:[^G]|G(?!O:\d))*(GO:\d+)?

替换为:

\1\n

See demo

我在ID之间添加了一个线条,因此它们不会出现连接。随意使用另一个分隔符。

说明:

  • 首先匹配所有非G字符或G后跟O:和数字,零次或多次。这些将被删除。
  • 匹配GO:后跟1位或更多位数,将数字保存到捕获组中。
  • GO:\d+组是可选的,以便此表达式可以在最后一次匹配后轻松删除文本(第一部分将与其余文本匹配)。

答案 1 :(得分:1)

使用\G.*?(GO:\d+|$)作为全局dot-all正则表达式模式,使用$1\n进行替换。

参见演示 here

答案 2 :(得分:0)

您可以使用:

search:  (?:(\r?\n?|^)(GO:\d{7}).*|(?:\r?\n|^).*)
replace: $1$2