【问题标题】:textpad regular expressions文本板正则表达式
【发布时间】:2013-06-27 04:40:06
【问题描述】:

请给我一些关于删除字母前换行符和忽略以 > 开头的行的建议。 例如:

>gi|16802049|ref|NP_463534.1| chromosomal replication initiation protein [Listeria monocytogenes EGD-e]
MQSIEDIWQETLQIVKKNMSKPSYDTWMKSTTAHSLEGNTFIISAPNNFVRDWLEKSYTQFIANILQEIT
GRLFDVRFIDGEQEENFEYTVIKPNPALDEDGIEIGKHMLNPRYVFDTFVIGSGNRFAHAASLAVAEAPA
KAYNPLFIYGGVGLGKTHLMHAVGHYVQQHKDNAKVMYLSSEKFTNEFISSIRDNKTEEFRTKYRNVDVL
LIDDIQFLAGKEGTQEEFFHTFNTLYDEQKQIIISSDRPPKEIPTLEDRLRSRFEWGLITDITPPDLETR
IAILRKKAKADGLDIPNEVMLYIANQIDSNIRELEGALIRVVAYSSLVNKDITAGLAAEALKDIIPSSKS
QVITISGIQEAVGEYFHVRLEDFKAKKRTKSIAFPRQIAMYLSRELTDASLPKIGDEFGGRDHTTVIHAH
EKISQLLKTDQVLKNDLAEIEKNLRKAQNMF

>gi|16802050|ref|NP_463535.1| DNA polymerase III subunit beta [Listeria monocytogenes EGD-e]
MKFVIERDRLVQAVNEVTRAISARTTIPILTGIKIVVNDEGVTLTGSDSDISIEAFIPLIENDEVIVEVE
SFGGIVLQSKYFGDIVRRLPEENVEIEVTSNYQTNISSGQASFTLNGLDPMEYPKLPEVTDGKTIKIPIN
VLKNIVRQTVFAVSAIEVRPVLTGVNWIIKENKLSAVATDSHRLALREIPLETDIDEEYNIVIPGKSLSE
LNKLLDDASESIEMTLANNQILFKLKDLLFYSRLLEGSYPDTSRLIPTDTKSELVINSKAFLQAIDRASL
LARENRNNVIKLMTLENGQVEVSSNSPEVGNVSENVFSQSFTGEEIKISFNGKYMMDALRAFEGDDIQIS
FSGTMRPFVLRPKDAANPNEILQLITPVRTY

应该是一条直线,而以 '>' 开头的行之前的换行符不应该被删除。我试过了

\n^[a-z]

但它也删除了每行的第一个字母。是否可以在不删除每行的第一个字母并忽略以“>”开头的行的情况下做同样的事情。提前谢谢。我正在寻找文本板的代码。

【问题讨论】:

    标签: regex newline textpad


    【解决方案1】:

    你可以使用这个正则表达式

     [\r\n]+(?=[a-zA-Z])
    

    并将其替换为empty string

    [\r\n]+([a-zA-Z])
    

    并用\1$1 替换它,无论哪个有效

    【讨论】:

    • @potterbond007 你有没有选中正则表达式的复选框
    • 是的,我有.. 我现在正在尝试使用 perl。您对在 perl 中执行相同操作的正则表达式有任何想法。
    • Anirudh 的这些表达式可以正常工作,但是最新版本的 Windows 版 Textpad 似乎无法正确处理正则表达式。我没有尝试以前的版本。我安装了应用程序并尝试寻找像[A-Z] 这样基本的东西,它直接来自手册,但也失败了。我建议转储 textpad 以支持诸如 notepad++ 之类的东西,它对正则表达式有更好的支持。
    • 感谢您的建议。我一定会看看的。
    【解决方案2】:

    我已经通过在 perl 中使用正则表达式解决了这个问题。对于将来需要这种东西的人

    use warnings;
    
    print "Please enter the name of the file\n";
    my $n =<STDIN>;
    
    print "Please enter the name of the output file\n";
    my $n1=<STDIN>;
    
    open(INFO,"$n") or die "cannot open";
    @a = <INFO>;
    
    #print @a;
    
    foreach(@a)
        {
            $_ =~ s/\n//g;
            $_ =~ s/>/\n>/g;
        }
    #print @a;
    open (MYFILE, ">$n1");
    print MYFILE @a;
    close(MYFILE);
    close(INFO);
    

    非常简单。

    【讨论】:

      猜你喜欢
      • 2011-11-10
      • 2018-08-02
      • 2022-01-17
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多