その3桁の整数が000~066の範囲にない行を抽出するための正規表現を教えてください。
例えば、"067abcde"はマッチし、"059ghwad"はマッチしません。
grepで利用します。よろしくお願いします。
grep で利用できる形にはなっていませんが、このような感じでどうでしょうか。
my @list = <DATA>;
for (@list) {
chomp;
print "$_ - ";
if (/^(\d{3})/ and $1 > 66) {
print "match";
} else {
print "unmatch";
}
print "
\n";}
__DATA__
067abcde
059ghwad
012hijkl
789bcdef
もしくは、次のようにすればマッチしたファイル名が@resultに入ります。
map { /^(\d{3})/; if ($1 > 66) { push @result, $_ } } @list;
もう一度、これでどうでしょう。
grep でマッチしたリストを得ます。
my @result = grep scalar(/^(\d{3})/, $1 > 66), @list;
(0[0-5][0-9]|06[0-6])
のように、| で複数のマッチ文字列を連結すればできますね。
1つ目が000〜059、2つ目が060〜066にマッチします。
ありがとうございます。
こちらがベストです! …と思ったら、条件が逆でした。
(0[^0-5][0-9]|06[^0-6])
ありがとうございました。終了します。
ありがとうございます。
でもごめんなさい、perlじゃないのです。
正規表現そのもので表現しきるものが必要でした。