• ベストアンサー

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

同一フォルダにある 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

  • 正規表現について

    いま.Netで正規表現にチャレンジしているのですが、どこが問題なのか分からず、投稿させていただきました。 正規表現のパターンです。 \\[Cc]\[(?<$0>[0-9]+),(?<$1>[0-9]+),(?<$2>[0-9]+)\] で、マッチさせたい文字列は、 \C[255,255,255] です。「[255,255,255]」の数字の部分は、一桁から三桁までの数字であれば何でもOKです。 マッチしないことは、http://jsregex.com/を使って調べました。 どうぞよろしくお願いします。

  • 正規表現

    数字と大文字、小文字のアルファベットは入力OK。 記号も入力OK。でも、記号の中でも「”」、「.」は ダメ。しかも、10桁くらい入力できるようにする。 を表す正規表現は [a-zA-Z0-9&&[\"\.]]* と思ったのですが、 正しく表す正規表現はどの様なものになるのでしょうか? お願いします。

    • ベストアンサー
    • Java
  • 正規表現の初心者です

    正規表現初心者です。 なぜ、 [0-9]+ という正規表現が下記の112にあたらないのでしょうか? 0-9(数字)の一文字以上の繰り返しなので、複数桁の数字にマッチすると思ったのですが・・。 echo 112|grep -e "[0-9]+" > (マッチせず)

  • 【VBScript】正規表現で数字の前0(ゼロ)を削除

    【VBScript】正規表現で数字の前0(ゼロ)を削除 ある変数に3桁の数字が格納されています。 例えば、001とか099とか403とか800とかです。 やりたいことは、数字の頭のゼロを削除したいです。 001→1 099→99 403→403のまま 800→800のまま 正規表現でなくても良いですが、 よろしくお願いします。

  • 正規表現によるチェック

    wikiのような掲示板のサイトを作っているのですが、 フォームへの入力値をチェックするところで、困っています。 正規表現を使えばよさそうなのですが、正規表現がよく理解できていないので、申し訳ないのですが、教えてください。 フォームへの入力が #ref(ファイル名1) #ref(ファイル名2) .... という形式に合致しているかをjavascriptでチェックし、合致しない場合はエラーを出したいと考えています。 ここで、ファイル名は 18桁の数字+拡張子 (jpg、pjpeg、gif、png、x-png) から成ります。 以上、すみませんが、ご教授の程よろしくお願いいたします。

  • 正規表現

    正規表現で次の文字列を認識する方法を教えてください 1. (000) (999) ()でくくられている3桁の数字。カッコを含みます 3桁の数字文字列だけなら'[0-9][0-9][0-9]' ?? 2. [あああ] (あああ) いあああ+ rあああ> 文字列'あああ'の前後の任意の文字、半角、全角両方OKを含む5文字 文字列がカッコの場合もあり

  • Cygwinの正規表現

    こんにちは、いつもお世話になっております。 タイトルの通りなのですが、 連続する0~9の数字が3桁と4桁の行が 入り混じっているテキストに対して、 3桁のもののみをgrepしたいのですが、 上手く行きません。 この場合の正規表現はどのようにすれば 良いでしょうか? ちょっと稚拙かも知れませんが、 1時間ぐらい錯綜しています。 何卒よろしくお願いします。

  • 正規表現について

    HTMLファイルを読み込み、特定の文字列にリンクを付けて出力したいのですが上手くいきません。 例: <img src="./seiki_hyougen.gif" alt="正規表現についての説明">更に正規表現を知りたい方は、<a href="special.html">正規表現の詳しい説明</a>をクリックして下さい。  ↓正規表現をキーワードにしてリンクを付けたい。 正:<img src="./seiki_hyougen.gif" alt="正規表現についての説明">更に<a href="seiki_hyougen.html">正規表現</a>を知りたい方は、<a href="special.html">正規表現の詳しい説明</a>をクリックして下さい。 誤:<img src="./seiki_hyougen.gif" alt="<a href="seiki_hyougen.html">正規表現</a>についての説明">更に<a href="seiki_hyougen.html">正規表現</a>を知りたい方は、<a href="special.html"><a href="seiki_hyougen.html">正規表現</a>の詳しい説明</a>をクリックして下さい。 尚、下記URLのサンプルを参考にしてスクリプトを作成しています。 http://php.oss.eznetsols.org/manual/ja/function.preg-split.php $r = preg_split('((\/a>)|(<a))', $html, -1, PREG_SPLIT_DELIM_CAPTURE); for ($i = 0; $i < count($r); $i++) { if ($r[$i] == "<a") { $i++; continue; } $r[$i] = preg_replace( "/(正規表現)/i", "<a href='seiki_hyougen.html'>\\1</a>", $r[$i] ); } return join("", $r); この(正規表現)の部分で上手い正規表現を使えばalt="×××"の中にリンクタグが入らないようにできるのでは?と思っているのですが・・・。 どうか、良い方法を教えて下さい。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 正規表現で半角数字1桁のみを全角数字に変換

    お世話になります。 JavaScript(JSP)で、 正規表現で半角数字1桁のみ(2桁以上は変換しない)を、 全角数字に変換する方法を教えてください。 たとえば、 ”hoge3hoge5”文字列内の、 半角数字1桁のみを、 正規表現で、全角数字1桁に、それぞれ変換   ↓ ”hoge3hoge5” あわせて、 半角数字が2桁以上、連続で続いている場合には 変換せずに、半角数字のままにしておきたいです。 ”hoge33hoge5”    ↓ 正規表現で、半角数字1桁のみを、全角数字1桁に変換 (半角数字2桁以上は変換しない) ”hoge33hoge5” 以上になります。 もしご存じの方がいらっしゃいましたら、 よろしくお願いします。

  • Outlook2007で正規表現で仕分けたい

    Outlook2007を使っています。 最近、*******.infoというドメインのメールアドレスから頻繁にスパムメールが届きます。 *******の部分は英数字7桁のランダムで、数日毎に新しくしているらしく、 ドメインでの単純なフィルタリングでは対処できません。 迷惑メールの処理レベルを「高」にすれば良いのかもしれませんが、 説明文には「通常のメールも処理されるかも」と書かれており、それはさすがにNGです。 しかしこのスパムのメールアドレスは、正規表現なら容易に判別できます。 アカウント部分も3種類しか無いようなので、 [mag|info|mail]@[a-z0-9]{7}\.info とでも書けば一発です。 そこで質問なのですが、Outlook2007で正規表現を使ったメール仕分けはできないのでしょうか。 ご存知の方いましたら、よろしくお願い致します。