正規表現を使用した業務効率化

このエントリーをはてなブックマークに追加


カートシステムの移行を行った際に使用した”正規表現”の機能例を説明します。
商品情報や会員情報などを違うカートシステム(異なる構成のデータベース)に移行する際、
正しくインサートできるよう元の情報を変換、またHTML内のリンクを移行後のリンクURLに変更する必要があります。
そのような場面で”正規表現”は活躍します。



【正規表現とは】

正規表現とは文字列を表現する表現法になります。
主に文字列の中から特定の集合(ルールにマッチングするテキスト)を検索・置換する事が出来ます。
PHPやJavaScriptなどのプログラム言語、エクセルや秀丸などのテキストエディタなどに機能があります。

仕組みやコードの説明をするより、使用例を見てもらった方が使い方が分かると思いますので、
下記の操作と結果をご覧ください。



【使用例】


[その1] ————————————–

下記のような商品IDリストがあれば簡単にURLリストを作成する事ができます。

1204-0044
1205-0034
1401-0067-13aw01
1003-0301


▼置換手順

^  ⇒ http://item.rakuten.co.jp/kisara/

▼結果

http://item.rakuten.co.jp/kisara/1204-0044
http://item.rakuten.co.jp/kisara/1205-0034
http://item.rakuten.co.jp/kisara/1401-0067-13aw01
http://item.rakuten.co.jp/kisara/1003-0301

▼更に違うシステム用のURLを生成

http://item.rakuten.co.jp/kisara/ ⇒ http://103.3.48.184/Form/Product/ProductDetail.aspx?shop=0&pid=

▼結果

http://103.3.48.184/Form/Product/ProductDetail.aspx?shop=0&pid=1204-0044
http://103.3.48.184/Form/Product/ProductDetail.aspx?shop=0&pid=1205-0034
http://103.3.48.184/Form/Product/ProductDetail.aspx?shop=0&pid=1401-0067-13aw01
http://103.3.48.184/Form/Product/ProductDetail.aspx?shop=0&pid=1003-0301


[その2] ————————————–

下記のように以降前のカートシステムでは郵便番号を1カラム[***-****]で管理していたが、
移行後のシステムでは2カラム[***][****]で管理している場合、[***-****]を2つに分割する必要があります。
そのような場合は下記の正規表現で簡単に分ける事ができます。

123-4567
456-7890
789-1234

▼置換手順

- ⇒ \t

▼結果

123    4567
456    7890
789    1234

※上記テキストをエクセルに貼り付けます。

—————-

前方3桁と後方4桁の間にハイフンが無い場合は下記の正規表現を使用します。

1234567
4567890
7890123

▼置換手順

^… ⇒ \0\t


▼結果

123    4567
456    7890
789    0123


[その3] ————————————–

郵便番号と違い桁数が異なる、更にハイフンが無い場合は下記で対応します。

移行前のカートシステムでは電話番号を1カラム[***-****-****]で管理しているが、
移行後のシステムでは3カラム[***][****][****]で管理している場合、[***-****-****] を3つに分割する必要があります。
そのような場合は下記の処理で簡単に分ける事ができます。

090-3802-9903
0852-28-3425(ハイフン位置、桁数が異なる)
072770-4611(前方のハイフンが無い)
08039019986(ハイフンが無い)
9021846601(先頭にゼロが無い)

○移行後のシステムの制限は下記でした。
・文字数上限: [文字数上限6]-[文字数上限4]-[文字数上限4] 全カラム必須
・半角数字のみ

※今回は電話番号の区切りを[3桁][4桁][それ以降]で分割します。


▼置換手順

^[^0]       ⇒ 0\0(先頭が0で無いものは 0を付ける ※ 海外番号は無視します。)
-           ⇒ (削除)
[^0-9|^\n]  ⇒ (数値以外が無いかチェック)
.[0-9]{11,} ⇒ (桁数オーバー チェック)
^.{0,7}$    ⇒ (桁数が足りないものをチェック)
^…        ⇒ \0\t(先頭から3桁を区切る)
\t….      ⇒ \0\t(次の4桁を区切る)


[その4] ————————————–

HTMLなどのコードをマッチングしたい場合は下記のようにします。

「国際配送」は楽天のみ対応していますので、公式では「国際配送」に関するテキスト(タグ)を全て削除する必要があります。
<tr>タグ内に「国際配送」という文字列が入った文字列にマッチングします。

▼正規表現

<tr>((?!/tr).|\n|\t)*国際配送((?!/tr).|\n|\t)*</tr>



【まとめ】

今回は正規表現でどのような事が出来るか説明したかった為、
具体的な仕組みやメタ文字の説明は省かせていただきました。
もし興味がある方は「正規表現」で検索してみてください。

プログラムやExcelのマクロでも似たような処理は出来ますが、
テキストエディタでもちょっとした事だと正規表現で効率化ができますので
参考にして頂ければと思います。

またプログラムやExcelのマクロと正規表現を組み合わせて作成すると
検索、置換、書き出しなどの一連の処理を自動化する事が可能になりますので
ルーティン業務で人力で作業している事はツール化する事をお薦めします。



▼ 正規表現対応のテキストエディタ

Sublime Text
http://www.sublimetext.com/

秀丸エディタ
http://hide.maruo.co.jp/software/hidemaru.html

このエントリーをはてなブックマークに追加
カテゴリー: コラム, ネットショップ 運営   作成者: 山尾哲生 パーマリンク