• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:正規表現で、00で始まる画像をgrep検索したいのですが、どう書けばよ)

正規表現で00で始まる画像のgrep検索方法と行の先頭にマッチする^の意味について

このQ&Aのポイント
  • 正規表現を使用して、00で始まる画像をgrep検索する方法についてのアドバイスをお願いします。また、行の先頭にマッチする^の意味についても教えてください。
  • 現在は00+.+.+(?=jpg)という正規表現を使用していますが、これでは「004-main.jpg」だけでなく「400-thumbs.jpg」なども検索されてしまいます。よりスマートな書き方を教えてください。
  • また、行の先頭にマッチする^は、改行の後の文字を指すのでしょうか?例えば、指定された文字列の前に必ず特定の文字列があるという条件を指定することはできるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#194317
noname#194317
回答No.2

grepもいろいろ種類があって、使える正規表現が違うものがある(正規表現が使えない紛い物まで存在する!)ので、一番基本的な正規表現だけで書くとこんな感じでしょうか。 [>/"] *00[^.]*\.[jJ][pP][gG] この式の弱点は、行頭にあるものは見つけられないことです。また、HTMLタグの中に書かれていないものもダメです。 で、行頭ですが、文頭を除いて改行の次で合っています。改行しかない行(空行)は、行頭であると同時に行末でもあるという扱いになり、^$という式で表せます。 余談ながら、grepの場合は検索だけなので問題にならないのですが、sedやawk,perlなどのテキスト処理言語やエディタなどの置換できるツールで、行頭や行末を加工した場合は話がややこしくなります。なぜなら新たな行頭や行末が発生してしまうため、これをどう扱うのかという話になるからです。正しくは、行頭や行末に対する置換は一度しか行われないことですが、これを正しく実装できていないエディタもあるので、注意が必要です(特に行頭)。

re999
質問者

お礼

ご回答ありがとうございました。 また、アドバイスもいただき、ありがとうございました。 >grepもいろいろ種類があって、使える正規表現が違うものがある(正規表現が使えない紛い物まで存在する! >行頭や行末に対する置換は一度しか行われないことですが、これを正しく実装できていないエディタもあるので、注意が必要です(特に行頭)。 実はツールとエディタと双方で試していて、処理結果が微妙に違うのにも悩んでました。 大変勉強になりましたー!

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

正規表現はプログラムによって異なります. したがって, ものによっては「プログラムA では使うことができるがプログラムB では使えない」こともあります. また状況によって解釈が変わることもあります. ということで, 書籍を紹介するにとどめておこう.

参考URL:
http://www.oreilly.co.jp/books/9784873113593/
re999
質問者

お礼

ご回答ありがとうございました。 ちょっと、厚そうな本だけど、 今度、本屋へ行ったとき、チェックしてきますー。

関連するQ&A

専門家に質問してみよう