【问题标题】:Merge lines with regex, with exception to certain lines使用正则表达式合并行,某些行除外
【发布时间】:2014-01-10 19:11:28
【问题描述】:

我想知道如何使用正则表达式在 Notepad++ 中合并行,以字符 ">"

开头的行除外

具体来说,对于:

我希望能够加入第 2、3、4 行; 6,7,8;和 10,11,12;但不是 1,5 或 9。在 notepad++ 中,我已经能够选择我想加入的行并使用扩展的查找/替换(查找:“\r\n”;替换:“”)加入选区内的行。但是,我有超过 11,626 行需要加入忽略行与“>”,因此手动这样做不是一种选择。

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

编辑:请求了一些实际代码,但最初并未发布,因为“>”将文本格式化为代码块。在每个代码片段之前添加引号,以便显示“>”:

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

【问题讨论】:

  • 请给我们示例行,而不是图像,然后我们可以通过复制/粘贴轻松测试我们的解决方案。
  • 问题是我在复制/粘贴时无法显示“>”,因为它是用于区分代码块的相同字符。
  • 您实际上可以使用前导 \ 转义 >,请参阅我对您问题的编辑 :)

标签: regex notepad++


【解决方案1】:

这应该适合你:

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

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

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

解释:

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

【讨论】:

  • 嗯,似乎不适用于我的数据。我将使用附加的链接工作示例进行调整。谢谢!
【解决方案2】:

你可以用这个:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 2011-10-12
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多