Perl Regex字符串的开头

时间:2013-02-11 14:03:56

标签: regex perl match

您好,我的文字如下:

让我说我有一个看起来像这样的电话号码:

39349562486245

和文件中的条目如下所示:

1002978;ITM;39349;ITALIEN  MOBIL;5;0;414;177

现在Number的开头与那里的那个匹配,我如何检查是否以Perl中的那个数字开头。所以我到目前为止,但它做了很多工作:

zeile [5]是电话号码。

open( DATEIMAIN, "<$dateimainc" ) || die("Datei $dateimainc kann nicht geöffnet werden!");
    my @zeilenMAIN = <DATEIMAIN>;   


    for(my $lineNMAIN = 1; $lineNMAIN < @zeilenMAIN; $lineNMAIN++)
        {
            @zeileMAINC =  split( /;/, $zeilenMAIN[$lineNMAIN] );

            if ($zeile[5] =~ /^$zeileMAINC[2]/)
            {
                $displaynameB = $zeileMAINC[3];
                last;
            }
        }

1 个答案:

答案 0 :(得分:1)

构建字符串前缀的哈希值,然后使用:

use warnings;
use strict;

#Load the lines of input data into a hash.
my %prefixes = map { chomp; split ';' } <DATA>;

my @numbers = ('39349562486245','123456789');

#Create a single regex like /^(12345|48956|...)/ for efficiency.
my $regex = '^(' . join('|',map{quotemeta} keys %prefixes) . ')';

for my $num (@numbers)
{
    print "$num is $prefixes{$1}\n" if ($num =~ /$regex/);  
}

__DATA__
39349;ITALIEN
12345;FOO