Regex 在Perl正则表达式中捕获存储字符串时遇到问题?

Regex 在Perl正则表达式中捕获存储字符串时遇到问题?,regex,perl,Regex,Perl,所以我已经研究这个问题有一段时间了 我有一个包含100个FASTA序列的文件,排列如下: >gi | 192567 | gb | AAA37417.1 |囊性纤维化跨膜电导调节器[小肌肉] 第二部分是对不同性别的女性进行性别歧视。第三部分是对女性的性别歧视。第三部分是对女性的性别歧视。第三部分是对女性的性别歧视。第三部分是对女性的性别歧视VTRQPTAVQIWYDSFGMIRKIQDFLKQEYKVLEYNLMTTGGIIMENVTAGFQQQNGDRKSSDENNVSFSHLCLVGNPVLK

所以我已经研究这个问题有一段时间了

我有一个包含100个FASTA序列的文件,排列如下:

>gi | 192567 | gb | AAA37417.1 |囊性纤维化跨膜电导调节器[小肌肉] 第二部分是对不同性别的女性进行性别歧视。第三部分是对女性的性别歧视。第三部分是对女性的性别歧视。第三部分是对女性的性别歧视。第三部分是对女性的性别歧视VTRQPTAVQIWYDSFGMIRKIQDFLKQEYKVLEYNLMTTGGIIMENVTAGFQQQNGDRKSSDENNVSFSHLCLVGNPVLKNINGININIEKGGKTSLLMLIGELEGELEGIGHIKGRVSFCSQFSWIMPGIKENIIFGVSYRYKSVKAQLQDITKFAEQDVTYKVTLLQDFLQDFLKDADYLDLYLDLYLDLVFTEEQVCLKLKLKLKLKLKKLKKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKFKLKFKLKLKLKLKLKLKLKKLKLK根据《基本法》和《基本法》的规定,在《基本法》的第二部分中,对《基本法》的第二部分进行了详细的说明第四部分是对怀孕妇女的健康状况进行评估,以确定怀孕妇女的健康状况Ehrieamldcqrfliesvwqydslqallseksifqqaissekmrffqgrhskhkprtqitalkeeteeveqetrl

我编写了一个子程序,打开文件,一次读取一个序列。对于每个序列,我想将开头的gi编号和大写字母的长序列作为字符串添加到一个不断增长的数组中。但是,我在编写正则表达式来存储这些值时遇到了问题。这是我当前的子例程,我对其进行了调整,以查看是否实际存储了gi编号:

sub getFASTA {
    my ($filename) = @_;
    my @FASTA_arr;
    $/ = "\n\n";
    open (my $fh, '<', $filename) or
            die ("Could not open file: $filename");
    while (<$fh>) {
            chomp $_;
            $_ =~ /^>gi|(\d*?)|/s;
            say "$1";
    }
    close $fh;
    #say join(" ", @FASTA_arr);
}
sub-getFASTA{
我的($filename)=@;
我的@FASTA_arr;
$/=“\n\n”;

open(我的$fh,|表示或在正则表达式中。对其进行转义。(似乎perl已经明白了当它位于捕获组的末尾并且没有第二个操作数时“真正”的意思)

您需要对正则表达式中的管道进行转义:
$\u=~/^>gi\\\d*?)\\\/s
谢谢,就是这样!我没有考虑特殊字符
Use of uninitialized value $1 in string at sequenceAlignment.pl line 30, <$fh> chunk 1.