如何使用正则表达式提取字符串
问题描述:
我有以下字符串:SL2.40ch12:53884872-53885197
。如何使用正则表达式提取字符串
我想分配给SL2.40ch12
$chromosome
,53884872
到$start
和53885197
到$end
。使用正则表达式执行此操作的有效方法是什么?
下面是我如何尝试这样做,但我的正则表达式关闭。
my $string = SL2.40ch12:53884872-53885197
my $chromosome =~ /^*\:$/
my $start =~ /^+d\-$/
my $end =~ /^-+d\/
感谢
答
对于特定的字符串,你可以做一些简单的像这样:
my $string = "SL2.40ch12:53884872-53885197";
my ($chr, $start, $end) = split /[:-]/, $string, 3;
如果你想让它有点严格,分别做他们
my ($chr, $range) = split /:/, $string, 2;
my ($start, $end) = split /-/, $range;
这当然,假设你不会有冒号或短划线出现在你的数据的其他地方。
答
我不是很熟悉Perl,但如果使用正则表达式常见的语法比你的$开始和$染色体行有一个错误。 '$' - 表示行结束。所以它会尝试在行尾找到破折号。
答
这里是一个可以做一个正则表达式,你想要什么:
($chromosome, $begin, $end) = /^(.*):(.*)-(.*)$/;
太好了,谢谢。 – cooldood3490 2013-03-20 16:59:38
不客气。 – TLP 2013-03-20 17:10:37
'[: - ]'就像你的微笑:) – gaussblurinc 2013-03-20 17:17:45