今回は正規表現です。たまにしか使わないのですぐに忘れてしまいますのでまとめておきます。 文字列の検索時にある条件にマッチしたものを表示させるものです。
エディターにも検索条件に正規表現という検索方法もあるかと思います。単純な条件ではなく複雑な条件で表示させることが出来てとても便利です。データ検索と置換は重要ですね。
簡単にまとめておきました。覚える項目は4項目だけです。
まずは基本のパターンマッチングです。いくつかの文字列を検索するためのメタキャラクタ(メタ文字)を掲載してあります。
メタ文字 | 説明 |
---|---|
. | 改行を除く任意の1文字に一致 |
\w | アルファベット、数字、アンダスコア( _ )のどれかの1文字、'[A-Za-z0-9_]' と同じ意味。 |
\W | アルファベット、数字、アンダスコア以外の1文字、'[^A-Za-z0-9_]' と同じ意味。 |
\s | スペース、タブ、フォームフィードなどの任意の空白文字と一致、[ \f\n\r\t\v] と同じ意味。 |
\S | 空白文字以外の任意の文字と一致、[^ \f\n\r\t\v] と同じ意味。 |
\d | 半角数字1文字、[0-9] と同じ意味。 |
\D | 半角数字以外、[^0-9] と同じ意味。 |
\n | 改行文字と一致。 |
\r | キャリッジリターン文字と一致。 |
\t | タブ文字と一致。 |
[abc] | 検索文字を指定します。角かっこ[]で囲まれた文字の中のいずれかに一致。たとえば、'[abc]' は "Alphabet" の 'ab' と一致。 |
[^abc] | 除外する検索文字を指定します。角かっこ[]で囲まれた文字以外の文字に一致。たとえば、'[^abc]' は "Alphabet" の 'Alphet' と一致。 |
[a-z] | 指定された範囲にある文字と一致。たとえば、"[a-z]" は小文字の英字 "a" から "z" の範囲にある任意の文字と一致。 |
[^a-z] | 否定の文字の範囲。たとえば、"[^a-z]" は小文字の英字 "a" から "z" の範囲外にある任意の文字と一致。 |
(x|y) | x または y と一致。たとえば、'eat|drink' は"eat"または"drink"と一致します。"(sam|ap)ple" は "sample" または "apple" に一致します。 |
量指定子とも言いますが、文字数がどれくらいなのか不明な場合や回数指定する場合などに利用します。 この方法を利用して要素を何回一致させるか指定することができます。
メタ文字 | 説明 |
---|---|
* | 直前の文字0回以上の繰り返しに一致。たとえば、'fo*'は"f"とも"foo"とも一致。* は {0,} と同じ意味。 |
+ | 直前の文字1回以上の繰り返しに一致。たとえば、"fo+"は"fo"や"fooo" とは一致しますが、"f" とは一致しません。+ は {1,} と同じ意味。 |
? | 直前の文字0回または1回一致。たとえば、'https?' は"http"または"https"と一致。? は{0,1}と同じ意味。 |
{n} | nには0以上の整数を指定します。正確にn回一致します。たとえば、'o{2}'は"Tomの'o'とは一致しませんが、"food"の2つの o とは一致します。 |
{n,} | nには0以上の整数を指定します。少なくともn回一致します。たとえば、'o{2}'は"Tom"の'o'とは一致しませんが、"foooood"のすべての o とは一致します。'o{1,}' は 'o+' と同じ意味になります。'o{0,}' は 'o*' と同じ意味になります。 |
{n,m} | m および n には 0 以上の整数を指定します。n は m 以下です。n ~ m 回一致します。たとえば、'o{1,3}' は "fooooood" の最初の 3 つの o と一致します。'o{0,1}' は 'o?' と同じ意味になります。カンマと数の間には、スペースを入れないでください。 |
文字列の先頭や末尾に特定の文字がある文字列も表現できます。行の先頭や末尾などの指定も出来ます。
メタ文字 | 説明 |
---|---|
^ | 入力文字列の先頭と一致。 |
$ | 入力文字列の末尾と一致。 |
\b | 単語の境界と一致。単語の境界とは、単語とスペースとの間の位置のことです。たとえば、'er\b'は"bloger" の'er'と一致しますが、"term"の'er'とは一致しません。 |
\B | 単語境界以外と一致します。たとえば、'er\B'は "term"の'er'と一致しますが、"bloger"の'er'とは一致しません。 |
条件でカッコ()を指定して再利用する方法です。カッコ()で囲われた部分を変数に代入することができます。この変数は$1,$2,$3…と使うこと可能です。置換する際に便利です。
https?://www.example.com/(\d{4})/(\d{2})/post-(\d{1,4}).html ⇒https://www.example.com/$1/$2/$3/
半角英数文字記号のhtmlファイルを検索する場合は以下のような感じになるかと思います。
([!-~]+).html
33番のコードから126番のコードまでという意味になります。
以下のコード表が参考になりました。
以下はブラウザ上で正規表現が出来るものです。確認する際に利用が出来て便利ですね。
参考になれば幸いです。
∞Tadashi Suyama∞
あまりcgiは使いたくないのですが使わざるを得ない時があります。仕方なく設置するのですがエラーが出ちゃうんです。なんか知らないけど。 ありがちなのがパーミッションとかパスが問題になるんのですけど...
19 Feb 2022
今回はワードプレス専用のアドレス変更方法をご紹介します。ワードプレスのアドレスはwordpress@~という形で送られてきますが変更可能です。 functions.phpに記載するのですがプラグ...
12 Feb 2022
Sassの遷移は多すぎる今日この頃 Ruby Sass→LibSass→DartSass(いまここ) Ruby SassはSassの最初の実装でしたが、2019年3月26日にサポートが終了しま...
22 Jan 2022
明けましておめでとうございます。 本年も何卒よろしくお願いいたします。 年末年始は雪でしたね、そこまで積もっていませんが。 {% include adsensearticle.html...
10 Jan 2022
最近はjQueryよりvueで書いた方が楽ではないかと思い学習中です。 そもそもVuejsはドキュメントが日本語対応なので試しやすいし情報も豊富なので学習しやすいです。 3大フレームワークと呼...
02 May 2021
ウェブエンジニアの須山のブログです。
WEBに関することや個人的に関心のあることについて書きます。主に技術系ブログです。