1

xml ファイルのタグ内に保持されている h:mm:ss 形式を「h 時間、mm 分、ss 秒」形式に置き換えようとしています。私が直面している問題は、タイムタグが行で始まり、行で終わる場合、正規表現を置き換えるのに適していることです。タグが 2 行目で開始および終了する場合、フォーマットを置き換えることができません。

ここに私がしようとしているものがあります -

while(<$rd>) {
   my $currLine = $_;
   $_ =~ s/\<time\> *(.):(..):(..) *\<\/time>/$1 hours, $2 minutes, $3 seconds/g;
   print FILE $_;
}

私の入力ファイルは次のようになります -

<time> 1:04:55    </time> this is a good time <time> 
2:04:22 </time> to ask your question Alfred, 
but did you check time <time> 3:45:32 </time> and <time> 02:03:45 </time>

「h:mm:ss」の形式を「h 時、mm 分、ss 秒」に置き換えることはできますが、2:04:22 はタグが別の行で開始および終了するためできません。

4

2 に答える 2

4

行ごとに読み取る代わりに、a まで読み取り</time>、' ' 以外の空白を許可します。

{
    use autodie 'open';
    open my $input, '<', 'input.xml';
    open my $output, '>', 'output.xml';
    local $/ = '</time>';
    while (<$input>) {
        s/<time>\s*(.):(..):(..)\s*<\/time>/$1 hours, $2 minutes, $3 seconds/;
        print $output $_;
    }
}
于 2013-11-04T06:41:19.063 に答える