目次

テスト

複雑で難しい正規表現(せいきひょうげん)を、少しでも理解しようとテストしてみています。当ページには、私がテストした正規表現の結果を、正解ではないかもしれませんが、順次掲載していきたいと思っています。

当ページのアイキャッチ画像は、複雑な迷路のような感じを表現しています。しかし、当ページをご覧になっているみなさまは、すぐにできるようになる気がします。

目次まで戻る

検索・置換フォーム

プライバシーポリシー

下記フォームの入力内容、実行結果は、当サイト管理人および外部に送信される仕組みで作成していません。ただ、何があるか分からないので、念のため、重要な情報は入力しないほうが良いと思います。

置換結果

ここに置換結果が表示されます。

検索結果

実行から完了までの、「グローバル の RegExp オブジェクト」と「 Regular Expression オブジェクト」の経過

ここに検索結果が表示されます。

目次まで戻る

正式な規則

正規(せいき)という言葉の意味を、インターネット上の国語辞書で調べてみますと、正式な規則とのことなので、当ページでテスト中の正規表現の意味は、正式な規則の表現ということになるのかもしれません。

正式な規則 ? 表現 ? と、普段、使い慣れない言葉に戸惑ってしまいましたが、なんとか考えてみたところ、以下のようなことかもしれません。

例えば、以下の文字があるとします。

0123456789

上の文字の規則は ? と聞かれると困ってしまいますが、上にはどんな文字が書いてある ? と聞かれると少し答えられそうです。

そう聞かれた場合、私は、

  1.  0123456789 ですよ。と、そのまま読む。
  2.  10 個の数字ですよ。
  3.  0 から 9 の数字が 10 個並んでいますよ。
  4.  0 から 1 づつ増えて 9 までの数字、 0123456789 ですよ。

などと答えると思います。

そうすると、私の答えを聞いた相手は、以下のリストから 0123456789 の文字を探すことができるかもしれません。

ABCDEFGHIJ
0123456789
あいうえお

ということは、人間用の正式な規則の表現(正規表現)のようなことができたのかもしれません。上のリストの文字は不規則でも、文字を探す時の検索条件、検索規則のようなものはこちらで指定できました。

検索条件を指定して、一致する文字を探し出せたということは、別の文字での置き換えをお願いしておけば、置換までやってもらえるはずです。

ただ、コンピュータと対話して同じようなことをするのは、どうすれば良いのか。それが、できるのが正規表現のようですが。ということで、次は、コンピュータ用の正規表現を試してみたいと思います。

目次まで戻る

コンピュータ用の正規表現

前の項目と同じ 0123456789 の文字を例として、パソコンで使える正規表現を作成してみたいと思います。

0123456789

とは言っても、今度の正規表現は自分の独自の話し言葉のみで表現するわけではなくて、コンピュータ用の正規表現は、決まりの文字があるようなので、その決まっている文字も組み合わせて作成する必要があるようです。

それでは、正規表現の決まりのひとつの数字を表す文字を使用して、上の文字を表現してみたいと思います。表現とはいっても、検索サイトで検索文字、検索条件を入力する感覚で良いと思います。

正規表現では、 \d (円記号と d )で 0 から 9 の数字が 1 文字という意味になるらしいので、上の例の文字は以下のように書くことができるようです。 \d と 2 文字になっていますが、 \d の 2 文字で 0 から 9 の数字 1 文字という意味になるようです。

¥d¥d¥d¥d¥d¥d¥d¥d¥d¥d

\d が 10 個並んでいるので、 0 から 9 の数字が 10 個並んでいる文字という風にパソコンが解釈してくれるようです。

そうすると、 0123456789 の文字に一致します。これは意外と簡単に済みました。

ここで使用した \d の文字は、文字クラス、メタキャラクタ、メタ文字などと呼ばれ、正規表現の特殊文字の中のひとつのようです。

\d は 0 から 9 の数字 1 文字を表しましたが、 \d の他にも、以下表のような文字クラスを使用して正規表現を組み立てることができるようです。

文字クラス 説明
. 任意の 1 文字を表すようです。ピリオドです。ピリオドが 10 個で 0123456789 と一致しました。
¥D

数字以外の文字を表すようです。 0123456789 とは、一致しませんでした。

¥w 大文字の A から Z 、小文字の a から z 、数字の 0 から 9 、アンダーバー( _ の記号)にまとめて一致するようです。 ¥w が 10 個で 0123456789 に一致しました。

上の表には、一部の文字クラスしか書けていませんが、下のリンクに詳しく載っています。

RegExp - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp#character-classes
正規表現の構文
https://msdn.microsoft.com/ja-jp/library/ae5bf541(v=vs.90).aspx

目次まで戻る

バックスラッシュ

前の項目で、使用した ¥d ですが、 \d が以下のように表示されることがあります。

\d

スラッシュ( / の記号 )の鏡像のような記号になっていますが、この文字は、バックスラッシュと呼ばれる文字のようです。どういう条件下でこう表示されるのかはっきりわかりませんが、日本語のフォントの場合は \d と表示され、日本語以外の、外国語のフォントで \d を表示した場合は、バックスラッシュで表示されるのだと思っています。

バックスラッシュ - Wikipedia
https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%83%E3%82%AF%E3%82%B9%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5

私にとって馴染みの深い、 Excel でもそうなるのか、 \ がバックスラッシュで表示されるのか見てみます。

フォントを「MS Pゴシック」にして、 \d を入力した場合です。 \ と d で表示されています。

MS P ゴシックで円記号を表示した場合。
MS P ゴシックで円記号を表示した場合。

フォントを「 Arial 」にして、 \d を入力した場合です。バックスラッシュと d で表示されています。特別な操作を行わなくても ¥ を入力した瞬間に、バックスラッシュが表示されます。円のほうが特殊文字のようです。

Arial で円記号を表示した場合。
Arial で円記号を表示した場合。

なので、 ¥d¥d¥d¥d¥d¥d¥d¥d¥d¥d の正規表現も、

\d\d\d\d\d\d\d\d\d\d

と表示されることがあるようです。

バックスラッシュは、正規表現に限らず、 Windows パソコンでフォルダとフォルダの境にある \ 記号もバックスラッシュで表示されることがあるようです。例えば Windows のデスクトップの場所は、以下のような感じが標準だと思いますが、

C:¥Users¥xxx¥Desktop

どこで見たのか、以下のように書かれている場合もあったような気がします。

C:\Users\xxx\Desktop

一見、 URL が書いてあるのかと思ってしまいますが、 違うようで、これはバックスラッシュなのでした。 \ マークの意味だったのです。私は、日本語のパソコンしか使用したことがないので、自分のパソコンでバックスラッシュが表示されたことはないですが、やはりあったような、ダウンロードしたファイルは、

C:\Users\xxx\Downloads

にあります。というような説明の文字としてみたことがあったように思います。

目次まで戻る

正規表現を使える場所

コンピュータ用の正規表現は、色々なプログラム上で使用できるようで、 Excel VBA からも利用できるようなので、正規表現を覚えると、お仕事にも役立つかもしれません。

ごく一部の例になりますが、以下のようなプログラムで正規表現を使用可能なようです。

  • JavaScript
    ウェブブラウザ上で動くプログラム言語。当ページで使用しています。
  • PHP
    ウェブサーバ上で動くプログラム言語。
  • Excel VBA
    Excel 上で動くプログラム言語。

テキストエディタといわれる、テキストを編集するためのアプリケーションから使用することもできるようです。「正規表現 テキストエディタ」のようなキーワードで検索してみると、フリーのもの、有料のものが見つかると思います。

新人Webデザイナー/開発者も知っておきたい:Web制作に使えるエディターAtom、Brackets、Coda、Sublime Textの現状まとめ - @IT
http://www.atmarkit.co.jp/ait/articles/1504/30/news019.html
スマホで便利な環境構築手順書:AtomをWindowsにダウンロードしてインストール、アンインストールする (1/3) - @IT
http://www.atmarkit.co.jp/ait/articles/1608/08/news027.html

目次まで戻る

パターンを変数で設定

JavaScript で正規表現のパターンを、変数の文字列で動的に設定したい時には、「 Regular Expression オブジェクト」を作成すれば良いようです。

var 新規変数名 = new RegExp( パターン文字列の入っている任意の変数 , フラグ文字列の入っている任意の変数 ); //新しい「 Regular Expression オブジェクト」を作成。この後、 新規変数名.exec(); 新規変数名.test(); などとして使用できるようです。

目次まで戻る

参考情報

目次まで戻る

あとがき

私の場合は、正規表現で検索、置換するよりも、手作業で検索、置換、コピー、ペーストでやったほうが早いレベルです。それはそれでと思いますが、良い意味の方ではないのです。非常に労力がかかります。自分で準備した "正規" のパターンの文字にも四苦八苦しており、実践的な正規表現というか、 HTML ソースのような規則的なはずなのに、文量の多いというか、パターンが複雑なのか、そういったテキストが対象になると、正規表現の検索パターンを作ってもうまくマッチせず、結果的に労力をかけるしか無いのが現状です。

以上、閲覧ありがとうございました。

目次まで戻る

[ Amazon.co.jp アソシエイト ] JavaScript 関係の本
https://amzn.to/48EoeGM

同じカテゴリの投稿(JavaScript)

前後の投稿