人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【正規表現】行の先頭3文字が固定長の3桁整数のファイルがあります。
その3桁の整数が000?066の範囲にない行を抽出するための正規表現を教えてください。
例えば、"067abcde"はマッチし、"059ghwad"はマッチしません。
grepで利用します。よろしくお願いします。

●質問者: ちゃぼりん
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:grep ファイル マッチ 抽出 整数
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● ootatmt
●5ポイント

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;


2 ● ootatmt
●10ポイント

もう一度、これでどうでしょう。

grep でマッチしたリストを得ます。

my @result = grep scalar(/^(\d{3})/, $1 > 66), @list;

◎質問者からの返答

ありがとうございます。

でもごめんなさい、perlじゃないのです。

正規表現そのもので表現しきるものが必要でした。


3 ● tadashi0805
●65ポイント

(0[0-5][0-9]|06[0-6])

のように、| で複数のマッチ文字列を連結すればできますね。

1つ目が000〜059、2つ目が060〜066にマッチします。

◎質問者からの返答

ありがとうございます。

こちらがベストです! …と思ったら、条件が逆でした。

(0[^0-5][0-9]|06[^0-6])

ありがとうございました。終了します。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ