2013-03-20 62 views
0

我有以下字符串:SL2.40ch12:53884872-53885197如何使用正則表達式提取字符串

我想分配給SL2.40ch12$chromosome53884872$start53885197$end。使用正則表達式執行此操作的有效方法是什麼?

下面是我如何嘗試這樣做,但我的正則表達式關閉。

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

感謝

回答

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; 

這當然,假設你不會有冒號或短劃線出現在你的數據的其他地方。

+0

太好了,謝謝。 – cooldood3490 2013-03-20 16:59:38

+0

不客氣。 – TLP 2013-03-20 17:10:37

+2

'[: - ]'就像你的微笑:) – gaussblurinc 2013-03-20 17:17:45

0

我不是很熟悉Perl,但如果使用正則表達式常見的語法比你的$開始和$染色體行有一個錯誤。 '$' - 表示行結束。所以它會嘗試在行尾找到破折號。

1

這裏是一個可以做一個正則表達式,你想要什麼:

($chromosome, $begin, $end) = /^(.*):(.*)-(.*)$/; 
相關問題