プログラミングで複雑なルールによる入力チェックや、文字列置換を行いたい時に正規表現を使えると非常に便利です。
複雑な入力チェックの処理をいくつも記述すると分かりづらいコードで、不具合の原因となる場合もあります。
正規表現を用いるとシンプルな記述方法で、簡潔なロジックで表すことができます。
その一方で、正規表現自体の記述方法はルールがたくさんあり、すべてを覚えるのは困難です。
必要な時に調べれば良いので、すべてを覚える必要はないと思いますが、どんなことができるのかは知っておく必要があります。
本ブログではこれまでに、JavaScript、Python、Java、Ruby、Goにおける正規表現を使った操作について解説してきました。
本記事では、各言語の正規表現を使った操作について比較しながらまとめていきます。
各言語における違いが分かったり、書き方を忘れてしまったときの復習用としても役立つ内容になっていますので、ぜひ最後までご覧いただければと思います。
本記事の最後に、各言語のソースコードを含む詳細内容を確認できる、関連ページへのリンクも用意しておきますので、気になる方はチェックしてみてください。
プログラミング言語の正規表現まとめ
各言語の正規表現として以下の内容を採り上げます。
- 正規表現の作成方法
- 正規表現による文字列チェック
- 正規表現による文字列置換
- 正規表現による文字列抽出
- 正規表現のエスケープ
正規表現の作成方法
言語 | 正規表現の作成方法 |
---|---|
JavaScript
|
|
Python
|
|
Java
|
|
Ruby
|
|
Go
|
|
正規表現の表現方法は各言語で異なります。
正規表現中の特殊文字やオプションは各言語ともにほぼ同じですが、詳細はリファレンスを見て確認が必要です。
正規表現による文字列チェック
言語 | 正規表現による文字列チェック |
---|---|
JavaScript
|
|
Python
|
|
Java
|
|
Ruby
|
|
Go
|
|
文字列が正規表現にマッチしているかどうかをチェックする方法は、各言語ともに様々な種類が提供されています。
概ね似たような機能ではありますが、文字列の最初に一致なのか、部分に一致なのかの違いや一致した一部を返すのか、全体を返すのかの違いのあたりに注意して使用する必要があります。
正規表現による文字列置換
言語 | 正規表現による文字列置換 |
---|---|
JavaScript
|
|
Python
|
|
Java
|
|
Ruby
|
|
Go
|
|
文字列の置換処理は大きくマッチするすべての文字列を置換対象とするか、一部を置換対象とするかで別れます。
それぞれ専用のメソッドが提供されているか、正規表現に指定するかなどは言語によって異なります。
正規表現による文字列抽出
言語 | 正規表現による文字列抽出 |
---|---|
JavaScript
|
|
Python
|
|
Java
|
|
Ruby
|
|
Go
|
|
正規表現で文字列を抽出する場合は、どの言語も括弧を使って抽出パターン指定します。
抽出した文字列を参照する方法は、抽出した順番に$1、$2で取得します。
Pythonは\1、\2となりますので、注意が必要です。
正規表現のエスケープ
言語 | 正規表現のエスケープ |
---|---|
JavaScript
|
|
Python
|
|
Java
|
|
Ruby
|
|
Go
|
|
プラスやピリオドなどの正規表現で意味を持つ特殊文字を文字として表現するには、エスケープが必要です。
どの言語も基本的には正規表現の中で、バックスラッシュを用いてエスケープを行います。
言語によっては、エスケープしてくれるメソッドも用意されているため、可変な正規表現を扱う場合には便利です。
正規表現はプログラム外でも役に立つ
正規表現はプログラムをシンプルにしてくれる便利なものですが、プログラム外でも役に立つことがあります。
エディタを使って文章を書いている際に、文字列の検索や置換をしたくなった場合に、正規表現で指定することが可能なエディタもあります。
Linuxのコマンドでも正規表現を使えるコマンドがたくさんあります。
Excelの関数などでも正規表現を使うことができます。
正規表現で書いてみたけど、思うようにマッチしないという場合には、正規表現チェッカーというツールで分かりやすく一致部分を表現してくれるツールもありますので活用してみてください。
正規表現は記述方法が難しいのですが、書けると非常に効率を上げてくれる手段になります。
サラッと正規表現を書ける人はカッコいいですよね。
今回は正規表現の作成方法や使用方法について、各言語を比較しながらまとめました。
ソースコードも含めた各言語の詳細が記述されている、関連ページヘのリンクを以下にまとめておきますので、気になる方はチェックしてみてください。
以上、参考になれば幸いです。
コメント