【发布时间】:2013-12-31 14:20:05
【问题描述】:
我正在尝试对 Perl 脚本进行逆向工程。其中一行包含一个匹配的运算符,内容如下:
$line =~ /^\s*^>/
输入只是带有标题信息的 FASTA 序列。我相信,该脚本正在标题中寻找特定的模式。
以下是应用脚本的文件示例:
>mm9_refGene_NM_001252200_0 range=chr1:39958075-39958131 5'pad=0 3'pad=0 strand=+
repeatMasking=none
ATGGCGAACGACTCTCCCGCGAAGAGCCTGGTGGACATTGACCTGTCGTC
CCTGCGG
>mm9_refGene_NM_001252200_1 range=chr1:39958354-39958419 5'pad=0 3'pad=0 strand=+
repeatMasking=none
GACCCTGCTGGGATTTTTGAGCTGGTGGAAGTGGTTGGAAATGGCACCTA
TGGACAAGTCTATAAG
这是一个匹配运算符,询问该行是否从一开始就包含至少大于零的空格,但随后我失去了它的意义。
到目前为止,这就是我解析正则表达式的方式:
从开头 [ (/^... ] 开始,包含至少大于零的空格 [ ...\s... ] [ ...*... }。
【问题讨论】:
-
最后的 ^ 是什么意思?
-
^ 不会出现在任何空格之后的标题中。因此,^ 符号必须修改正则表达式中的某些内容。我不明白它在做什么。空格后跟 ^ 是什么意思?
-
@BoristheSpider - 我相信
^只有在被转义时才会被匹配为文字 (\^)。 -
由于 fasta 记录总是以“>”开头,因此判断何时遇到新记录的一种方法是
/^>/。我怀疑/^\s*^>/的作者是指/^>/,因为作者也匹配fasta 记录的开头。你会在很多生物信息学 Perl 脚本中看到/^>/就是为了这个目的。 -
啊,@Kenosis,你过去一直很有帮助!您是否同意最初编写的正则表达式不仅在寻找 >,而且还在寻找 > 之前的拼写错误或额外的空格?
标签: regex string perl string-matching