正規表現で文字列の中身を大幅に変えてみた

プログラムから読み込むデータにXMLベースのものがあるのですが、時々、プログラムの仕様変更に応じてXMLのタグの中身を変えることがあります。

こんな感じです。


萌え俳句いろは創刊号


萌え俳句いろは創刊号 Hensuu='タイトル00001'


変わりすぎwwwww勘弁してwwww

タグの構成が大幅に変わっているうえに、データの配置も逆になっています。
こういう変更も、100行くらいなら手打ちで変更できないこともないですが、業務で使われているものとなると、変更が数万件にのぼることもあり、とても手動ではできません。

とはいうものの、テキストエディタで置換をかけようにも、構成が変わりすぎてて、どうしたものか。

といろいろ調べてみたら、以下のサイトを見つけました。


すぐ使える! 正規表現サンプル集
http://hodade.adam.ne.jp/seiki/

このサイトの、このページの内容が今回のような置換にちょうど一致していました。


文字列の一部だけを変更したい
http://hodade.adam.ne.jp/seiki/page.php?r_ichibu


詳しくは上記ページをご覧いただくとして、ポイントは、

正規表現で、
・置換させたくない文字列を複数設定できる
・置換させない文字列を変数のように扱い、置換時に好きな場所にはめ込むことができる

ということです。


実際にテキストエディタを使って置換してみましょう。
今回は、サクラエディタを使ってみます。

変更前のXML文字列 クリックで拡大します。
画像



置換前(検索文字列)
(.+?)

置換後(置換文字列)
$2 Hensuu='$1'


メニューの「検索」から、「置換」を選んで上記を入力します。「正規表現」にチェックを入れるようにします。

画像


置換開始!

一件目が置換されました。どうやらうまくいっているようです。
画像



置換終了! 新しい文字列に置換できました。
画像



置換させたくない文字列()内の文字列を、それぞれ出現順に$1、$2の中に格納し、それを今度は$2、$1の順で書き込みしています。正規表現の中には、文字列の一部を変数のように扱えるものがあるんですね。とても便利です。

ちなみに、正規表現のなかの、

「()」は、置換させない文字列の範囲、
「.+」は一文字以上の文字、
「?」は最短一致、
「$n」は、()で囲んだ文字列をn番目に格納したもの、となります。


正規表現も、見た目がまるで難解プログラミング言語みたいなのがなければもっととっつきやすいのになぁ。




ラーメン屋の餃子って美味しいと思えるところになかなか出会えないよ。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック