- ベストアンサー
正規表現ですが・・・
正規表現なんですが(Perlです。) Aa_abcd_aa.txt Aa_abcd_bb.txt Aa_abcd_cc.txt Bb_abcd.txt 上記のabcdの部分をマッチさせるために (?<=Aa_|Bb_).*(?=_aa|_bb|_cc|\.txt) としてみましたが、これでは Aa_abcd_aa.txt Aa_abcd_bb.txt Aa_abcd_cc.txt のabcd_aaやabcd_bbやabcd_ccとマッチしてしまいます。 なにかよい表現の仕方はありますか? まとめてマッチさせる表現が知りたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こう? use strict; use warnings; my $pat = qr{(?<=Aa_|Bb_) .*? (?= (?: _ (?:aa|bb|cc))? \.txt)}x; while (<DATA>) { print $&,"\n" if /$pat/; } __END__ Aa_abcd_aa.txt Aa_abcd_bb.txt Aa_abcd_cc.txt Aa_abcd_zz.txt Bb_abcd.txt 実行結果: abcd abcd abcd abcd_zz abcd _aa, _bb, _cc 以外の_ + 二文字のパターンをどうするか わからないので適当にやりました。
お礼
できました!! ありがとうございます。