匹配模式并提取下一个10个字符perl

时间:2014-12-06 07:58:36

标签: string perl pattern-matching

我想要一个perl正则表达式,它可以匹配字符串中的模式LOC_,并从字符串中提取接下来的10个字符,包括LOC_。

示例:

  • 字符串:H2CTT5_ORYRU | LOC_Os02g10100
    结果:LOC_Os02g10100

  • 字符串:Os02g0528200 | LOC_Os02g32660
    结果:LOC_Os02g32660

  • 字符串:LOC_Os09g54663 | Os02g0528200 | H2CTT6_OCYRU
    结果:LOC_Os09g54663

感谢。

2 个答案:

答案 0 :(得分:0)

你可以尝试:

if ($str=~ /(LOC_.{10})/) {
    print "'$1'\n";
}

(我认为问题必须是重复的,或者至少可以从Perl正则表达式文档中找到答案,例如参见

http://perldoc.perl.org/perlretut.html#Matching-repetitions

答案 1 :(得分:0)

试试这个

 foreach (<DATA>){
    m/(LOC_).{10}/g;
    print "$&\n";
 }

__DATA__
string : H2CTT5_ORYRU|LOC_Os02g10100
result : LOC_Os02g10100
string: Os02g0528200|LOC_Os02g32660
result: LOC_Os02g32660
string: LOC_Os09g54663|Os02g0528200|H2CTT6_OCYRU
result: LOC_Os09g54663