メニューを閉じる

テクノデジタルグループ

メニューを開く

2018.02.01

その他

正規表現での置換が便利だった

Mです。

文字列の置換をするときに
$1,$2,$3…という表記を使用することで、()でグループ化したものをそのまま置換に使用する事ができて非常に便利だったので記事にします。

たとえば
「getTestA();」と「getTestB();」のみを「getItem(A or B)();」としたいとき

getTest(A|B)\(\);
↓
getItem();

とするとAとBで異なる部分が必要な時には不可能ですが、

getTest(A|B)\(\);
↓
getItem$1();
↓
getItemA();
getItemB();

$1という表現を使用することで、うまく置換することができます。

これを使うと例えば、
「setItem((Object)abc.getItem());」と「setItem((Object)def.getItem());」のみを
「setItem(abc.getItem());」と「setItem(def.getItem());」としたいとき
(ABCDEとABCFE を AB(D|F)E とするとき)

setItem\(\(Object\)(abc|def).getItem\(\)\);
↓
setItem\($1.getItem\(\)\);

とできます。さらに、次のようにすると

(setItem\()\(Object\)(abc|def)(.getItem\(\)\)));
↓
$1$2$3

と表示できます。特に意味はありませんが、多数の選択肢を用意できるということです。

実際に役立った場面は、プロジェクトの一部の部分を一括で直したいときです。
基本的な置換をこの正規表現に任せ、残りの細かい部分は手作業で行ったり、
様々なパターンに対応した正規表現を用意することで全ての作業を一括置換に任せることもできます。
もちろん、確認作業などは手作業ですが・・・

こうすることで、機械的に処理を行うことができるので、
作業の手間の短縮や問題点が分かりやすく置換が漏れにくいというメリットが生まれます。

知っておくと便利で、知らないと損をする知識でした。


【記事への感想募集中!】

記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!
  • こんな記事が読んでみたい、こんなことが知りたい、調べてほしい!という意見も募集中!
  • いただいた感想は今後の記事に活かしたいと思います!

感想フォームはこちら


【テクノデジタルではエンジニア/デザイナーを積極採用中です!】

下記項目に1つでも当てはまる方は是非、詳細ページへ!
  • 自分でアプリを作ってみたい
  • ITで世の中にワクワクを生み出したい
  • 使いやすさ、デザインにこだわったWebサイトを開発したい

採用情報の詳細はこちら


Qangaroo(カンガルー)

  • 徹底した見やすさと優れた操作性で、テストの「見える化」を実現。
  • テストの進捗が見える。開発がスマートに進む。
  • クラウド型テスト管理ツール『Qangaroo(カンガルー)』

【テクノデジタルのインフラサービス】

当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。

https://www.tcdigital.jp/infrastructure/

最近の記事