• ベストアンサー

ファイル名の頭にゼロを付ける正規表現

同一フォルダにある Chart1.gif Chart2.gif :(中略) Chart99.gif Chart100.gif :(続く) とあるファイルを,「RegRen」という正規表現対応リネームツールによって http://www.magnet-j.org/mag/member.nifty.ne.jp/magshp/softs/regren.html 001.gif 002.gif :(中略) 099.gif 100.gif :(続く) というフォーマットにリネームしたいのですが,うまい表現はありません でしょうか. ちなみに, (1) Chartを消す (2) 1桁の数字の前に00 (3) 2桁の数字の前に0を付ける という三段階ならわたしでもできそうなので,ここは「一発」にこだわっての 質問です.よろしくお願い致します。

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

  • ベストアンサー
  • sakuhat
  • ベストアンサー率61% (11/18)
回答No.2

2回ならできるんですけどね・・・ 1回目(Chartを消して0を2つ加え、3桁以上の数字にする) 検索 ^Chart(\d{1,3})$ 置換 00\1 これで Chart1→001 Chart11→0011 Chart111→00111 2回目(下3桁のみ取得) 検索 ^\d*(\d{3})$ 置換 \1 これで 001→001 0011→011 00111→111

litton101
質問者

お礼

sakuhatさん,レスありがとうございました. なるほどなるほど.詰め将棋みたいですね(^^) 一手減るだけでも間違いを減らすことができそうです. 活用させていただきますm(_ _)m

その他の回答 (1)

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

残念ながら、一発変換は無理のようです。 Chart1.gif~Chart9.gif は ^Chart(\d)$ 00\1 Chart10.gif~Chart99.gif は ^Chart(\d\)$ 0\1 Chart100.gif~Chart999.gif は ^Chart(\d\)$ \1 で変換でできますが、これはすでに、想定済みだと思います。 それで、提案ですが、この作者に以下のようなメールを打ってみてはいかがですか。 正規表現の独自拡張の作成依頼 \1の代わりに\01 \001 \0001 \0001 のようなものを 定義する。 \01は\1と同じ意味であるが、\1の桁数が1桁の時、頭に0を1つける \001は\1と同じ意味であるが、\1の桁数が2桁以内の時、頭に3桁になるまで0をつける 一般的には \000000...01 (0がN個とする)の時、 全体の桁数がN+1になるまで、\1の前に0を付加する。 この仕様がつかえれば ^Chart(\d{1,3})$ \001 で一発変換できます。

litton101
質問者

お礼

tatsu99さん,貴重なアドバイスありがとうございます. やはり無理ですか... 独自拡張の方はなるほどと思いました. 同じ置換は今後も続くので是非要望したいです. 開発がとまってる(っぽい)ことが気がかりですが...

関連するQ&A