次の文字列ケースがあります。
- 私の $str = "Warehouse.13.s01e01.hdtv.xor.avi";
- my $str = "Warehouse.13.01x01.hdtv.xor.avi";
- my $str = "Warehouse.13.season01episode01.hdtv.xor.avi";
上記の場合の delimiter( .) は に置き換えることができます_ - \s。上記のケースに一致するように、次の正規表現を作成しましたが、正常に動作します。
my $regex_object = qr{.*?\d{1,2}(?:e|edosipe)?[._\- x]?\d{1,2}(?:s|nosaes)?[._\- ]?(?=\d+)(.*)};
後読みで絶対長が一致する必要があるため、処理する文字列を逆にする必要があったことがわかります\d+。そのため、先読みに変換しました。
上記の場合、出力Warehouse 13は私の必要な出力です。
問題は、上記の正規表現を一致させたくseries nameない場合に含まれていない場合、およびi,e の前に数字が付いているかどうかを確認することです。numbers(13,24)(?=\d+)s|season
私の場合$strは'how.i.met.your.mother.s03e13.hdtv.mkv'、上記の正規表現と出力に一致します
how.i.met.your.mother.s0
さて、後読みを使用した後でもこの文字列と一致する理由とそれを修正する方法がわかりません。