Vz resources : Regular Expression

耳より正規表現入門

VZユーザーのための,VWXによる正規表現利用のてびき
初出:nifty:FGALDC/MES/13/09142〜 (2002/06/18〜2002/07/21)

第23回  タグ付き正規表現 (3) そして「章・節・項」ふたたび

タグ付き正規表現は非常に便利なもので,用途がハマるとまるで魔術のような劇的な効果が期待できます。その反面,外したときにはめちゃくちゃにテキストを崩してしまいます。複雑な正規表現の複合式になってくると,実際にやってみないと結果が予測不可能なことが多いですね。タグ付き正規表現が難解だと言われますが,「結果が怖い」というのも敬遠される理由になっていないでしょうか。どうもそんな気がするわけです。

そこで提案ですが,何でも一発でやろうとせずに,2段階,3段階に分けてやってみるというのはいかがでしょうか。そしてその段階ごとにファイルはセーブして取っておくわけです。そうすれば取り返しのつかない事態になるなどということはありません。

それでは,サンプルとして先の目次実習で扱った章節項標題の書式を,タグ付き正規表現を使って『1.2.3 標題』から『第1章 第2節 第3項 標題』に置換してみることにしましょう。

検索に使用した正規表現は,以下のようなものでした。

^[1-9]\.?[0-9]*\.?[0-9]* .+$

この正規表現は,『*』『?』を使用していますね。『*』『?』を使用した場合,空の文字列にもマッチする可能性があるので,後方参照することは少々危険が伴います。下手をすると,

『第\1章 第\2節 第\3項 \4』

…なんてものが出力されてしまう可能性だってあります。

手順としては,以下のようになります。

これはあくまでも一例ですので,状況によって変化しますが基本は同じです。

別のやり方としては,「章・節・項」の番号がそれぞれ存在する段階別に,一括置換するというものです。

同じ3段階方式でも,こちらのほうが「う〜ん,正規表現を使ってるぞ!」という感じがあるとも言えますね。どちらでやるかは好みでしょう。自分的には(〜的はやめなさいってば),後者ですかね。ヒストリーの使い回しがかなり利きますし,どの段階でも標題とセットですから厳密度が上がるため,事前の行頭数字チェックのような準備も特に必要ないでしょう。

後方参照をいくつも必要とする置換はパターンを考えるだけでも結構大変ですが,段階的置換なら単純作業にまでレベルを落とすことができます。気楽に回り道をすれば,却って時間がかからなかったりしますね。

あえて山越えをしたければ,遭難しないようにお気をつけて。(笑)


The VZ resources. ©2002 by mezala. mailto:mezala@nifty.com