0

我有以下字符串:SL2.40ch12:53884872-53885197.

我想分配SL2.40ch12$chromosome53884872和。使用正则表达式执行此操作的有效方法是什么?$start53885197$end

这是我尝试这样做的方法,但我的正则表达式已关闭。

my $string = SL2.40ch12:53884872-53885197
my $chromosome =~ /^*\:$/
my $start =~ /^+d\-$/
my $end =~ /^-+d\/

谢谢

4

3 回答 3

2

对于该特定字符串,您可以执行以下简单操作:

my $string = "SL2.40ch12:53884872-53885197";
my ($chr, $start, $end) = split /[:-]/, $string, 3; 

如果你想要更严格一点,分开做

my ($chr, $range) = split /:/, $string, 2;
my ($start, $end) = split /-/, $range;

当然,这是假设您的数据中其他地方不会出现冒号或破折号。

于 2013-03-20T16:52:25.023 回答
1

这是一个可以做你想做的正则表达式:

($chromosome, $begin, $end) = /^(.*):(.*)-(.*)$/;
于 2013-03-20T16:35:23.707 回答
0

我对 Perl 不是很熟悉,但是如果它使用常见的正则表达式语法,那么您的 $start 和 $chromosome 行就会出错。'$' - 表示行尾。所以它会尝试在行尾找到破折号。

于 2013-03-20T16:34:38.067 回答