1

ファイルからいくつかの情報を解析したい。

ファイル内の情報:

Rita_bike_house_Sha9

Rita_bike_house

disのように出力したい

$a = Rita_bike_house and $b = Sha9,

$a = Rita_bike_house and $b = "original"

それを取得するために、以下のコードを使用しました。

$name = @_; # This @_ has all the information from the file that I have shown above. 

#For matching pattern Rita_bike_house_Sha9 
($a, $b) = $name =~  /\w\d+/; 

if ($a ne "" and $b ne "" ) { return ($a,$b) } 
# this statement doesnot work at all as its first condition 
# before the end is not satisified. 

$a「Rita_bike_house」と「Sha9 」を に格納する方法はあります$bか? 私の正規表現には何かが欠けていると思います。何か提案できますか?

4

3 に答える 3

0

必要なパターンが常に「Sha9」に似ていて、最後に表示されることが確実な場合は、貪欲なマッチングを行ってください....

open FILE, "filename.txt" or die $!;
my @data = <FILE>;
close(<FILE>);
#my $line = "Rita_bike_house_Sha9";
foreach $line (@data)
{
    chomp($line);
    if ($line =~ m/(.*?)(_([a-zA-Z]+[0-9]+))?$/)
    {
        $a = $1;
        $b = $3 ? $3 : "original";
    }
}
于 2013-07-09T10:08:16.403 に答える