合并具有正则表达式的行,但某些行除外

时间:2014-01-10 19:11:29

标签: regex notepad++

我想知道如何使用正则表达式在Notepad ++中合并行,但以“>”字符开头的行除外

具体来说,对于: enter image description here

我希望能够加入第2,3,4行; 6,7,8;和10,11,12;但是不是1,5或9.在notepad ++中,我已经能够选择我想要加入的行并使用扩展的查找/替换(查找:“\ r \ n”;替换:“”)来加入选择中的行。但是,我有超过11,626行我需要加入忽略带有“>”的行,所以手动执行此操作不是一个选项。

*注意:上图显示每个条目具有相同的行数,但情况并非总是如此。

编辑:请求了一些实际的代码,最初没有发布,因为“>”将文本格式化为代码块。在每个代码snipplet之前添加引用,以便“>”显示:

  

> Boechera_canadensus   AACGACTCTCGGCAACGGATATCTCGGCTCTCGCATCGATGAAGAACGTAGCGAAATGCGATACTTGGTG   TGAATTGCAGAATCCCGTGAACCATCGAGTCTTTGAACGCAAGTTGCGCCCCAAGCCTTTCGGCCGAGGG   CACGTCTGCCTGGGTGTCAC
  > Carex_pellita   AATATGACTCTCGGCAACGGATATCTCGGCTCTCGCATCGATGAAGAACGTAGCGAAATGCGATACGTGG   TGTGAATTGCAGAATCCCGTGAACCATCGAGTCTTTGAACGCAAGTTGCGCCCGAGGGACCCTCCCGAGG   GCACGCCTGCCTCATGGGCGTTAGAA
  > Carex_lacustris   AATATGACTCTCGGCAACGGATATCTCGGCTCTCGCATCGATGAAGAACGTAGCGAAATGCGATACGTGG   TGTGAATTGCAGAATCCCGTGAACCATCGAGTCTTTGAACGCAAGTTGCGCCCGAGGGACCCTCCCGAGG   GCACGCCTGCCTCATGGGCGTTAGAA

2 个答案:

答案 0 :(得分:1)

这应该适合你:

(^[^>].*?)\n(?!>)

然后替换为第一个捕获组$1

enter image description here

工作示例:http://regex101.com/r/yZ4nT0

说明:

  • 我们匹配所有不以>开头的行,使用非贪婪匹配 - 每个字符.*?
  • 我们将其包装在捕获中,不包括\n(新行)
  • 使用否定前瞻(?!>),我们确保我们只捕获不在另一个>之前的行。

答案 1 :(得分:0)

您可以使用:

find: (?<=[ACTG])\r?\n(?=[ACTG])
replace: nothing