在perl中提取子字符串

时间:2014-03-12 12:41:08

标签: perl indexing substr

我需要从perl程序中的给定字符串中提取子字符串。 字符串的格式为:

<PrefixString>_<MyString>_<SuffixString>.pdf

示例:abcd_ThisIsWhatIWant_xyz.pdf

我需要提取“ThisIsWhatIWant”

有人可以帮我吗?

谢谢!

这是我正在尝试的子程序:

sub extractString{
        my ($fileName) = @_;
        my $offset = 2;
        my $delimeter = '_';
        my $fileNameLen = index($fileName, $delimeter, $offset);
        my $extractedFileName = substr($fileName, 8, $fileNameLen-1);
        return $extractedFileName;
  }

1 个答案:

答案 0 :(得分:4)

您可以使用split或正则表达式。这个简短的计划显示了两种选择。

use strict;
use warnings;

my $filename = 'abcd_ThisIsWhatIWant_xyz.pdf';

my ($substring1) = $filename =~ /_([^_]*)_/;
print $substring1, "\n";

my $substring2 = (split /_/, $filename)[1];
print $substring2, "\n";

<强>输出

ThisIsWhatIWant
ThisIsWhatIWant