■ TextPad正規表現
割合知られていませんがUNIXの世界では正規表現を知っていると知らないとでは大違い。
作業効率に雲泥の差が出てきます。
ここでは難しい正規表現の説明は止めて私が遭遇した事例を使いながら親しんでみましょう。
■ 日付を並び替えたい場合
手短な例ですが、一件だけ書き換えるならば正規表現を使う必要はありません。
ところが別のデータベースからExcelに読みたいとき 書式が違うためにさっぱり使えないようなことはしばしばあります。
例えば
10/20 2000
このような表記では日付として入力できません
2000/10/10
このように並び替えます。
TextPadの置換ダイアログを立ち上げて下記のように入力します。
"/"で区切られた数字の集合[0-9]*を\(と\)でくくります。
\(と\)で区切ると後で\1、\2と順番にその集合体を置換できます。
\([0-9]*)\/\([0-9]*\) *\([0-9]*\)
置換すべき文字列は下記のようになります。
3番目の年数を先頭に持ってくるわけです。
\3/\2/\1
これでOk。
■ プログラム中の引数を変更したい
少しマニアックです。
putc(c); putc(CRLF);
のような関数表現の仕様を変更したいので
fputc(c,fout); fputc(CRLF,fout);
と変更したいとき。括弧の中身を上手にくくる必要があります。
正規表現の真髄です。 一番外側の括弧を探すように括弧でない ^( 全て [^(*] を探して置き換えます。
検索文字列は
putc(\([^(*]*\))
置換文字列は
fputc(\1,fout)
これだけです。
■ HTMLのタグ表現
今度はWebです。
<H4>のように指定したヘッダーを一段下げたい、<H5>にしたいとき
<H4>を<H5>
に置き換えるだけなら簡単ですが
<H4 font=XXXX>のような場合も出てきます。
こんなときは末尾の > を含まない ^> 全て [~>]* と記述します
<H4\([^>]*\)>
これを
<H5\1>
とするわけです。
■ JavaScript
もう一つ複数行に渡るとき 例えばJavaScriptを置き換えたいときは、
改行を\n数えてあげます
^<!--.*\n.*\n.*\n.*\n.*\n.*\n// -->\n
これで改行数さえ合っていれば同様に見つかります。
新しいScriptを開始タグ含めて置換文字列に貼り付けると自動的に改行は\nとみなされ
同じように置き換えることができるのです!!
■ 漢字を扱うにはどうするんだ!
漢字は正規表現ではあまりサポートされていません。例えばA-Zといった表現はできないわけです。
これではなにもできないではないか。いえいえこうしましょう
・STEP1 申込: 01/12 13 35,620円
・STEP2 支払: 01/13 13 35,620円
これは、ベクターソフトの集計レポートですが、これを一気に、
申込:;01/12;13;35,629円
支払:;01/13;13;35,629円
としてみましょう。CSVとしてExcelに読み込めます。漢字の「申込」「支払」が厄介ですね、
^・STEP. \([^ ]*\)[ ]+\([^ ]*\) +\([^ ]*\) +\([^ ]*\)
スペースでないところを探すのが味噌です。\( \)でくくって
\1;\2;\3;\4
と置き換えてOkです。
こんな場合どうするのといった質問お待ちしてます。
e-mail:okadatk@yahoo.co.jp
|