検索・置換で使用する正規表現のパターンを指定します。
- 構文
- RegExp.Pattern = String
- 引数
- 戻り値
使い方
正規表現で使用するパターンを指定します。パターンに指定する文字列は正規表現を参考にしてください。指定したパターンの検索を行い結果を取得するにはRegExp.Pattern プロパティを指定したあとにRegExp.Execute メソッド、置換するにはRegExp.Replace メソッド、一致するかのテストを行うにはRegExp.Test メソッドを実行します。
以下はパターンにマッチした文字列を出力するプログラムです。
DIM RegExp = CREATEOLEOBJ("VBScript.RegExp")
WITH RegExp
.Pattern = "\d+"
DIM MatchCollection = .Execute("123,456")
PRINT MatchCollection.Item(0).Value
ENDWITH
- 結果
123
よく使うパターン
IPアドレス
0.0.0.0~255.255.255.255の範囲にマッチします。
(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])
プライベートIPアドレス
プライベートIPアドレスにマッチします。IPアドレスの範囲はIPアドレス - グローバルIPアドレスとプライベートIPアドレスを参考にしています。
クラスA
10.0.0.0~10.255.255.255の範囲にマッチします。
10(\.([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}
クラスB
172.16.0.0~172.31.255.255の範囲にマッチします。
172\.(1[6-9]|2[0-9]|3[0-1])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){2}
クラスC
192.168.0.0~192.168.255.255の範囲にマッチします。
192\.168(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){2}
クラスA・クラスB・クラスC
クラスA・クラスB・クラスCのすべてにマッチします。以下の2つはすべてに共通している第4オクテットを共通項として外に出しているかどうかの違いだけで、マッチする値に違いはありません。
\b(10(\.([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}|172\.(1[6-9]|2[0-9]|3[0-1])(\.([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){2}|192\.168(\.([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){2})\b
\b((10(\.([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){2})|172\.(1[6-9]|2[0-9]|3[01])\.([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|192\.168\.([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\.([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\b
メールアドレス
すべてのメールアドレスにマッチします。
\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}\b
キャリアメール
au(@ezweb.ne.jp)、ドコモ(@docomo.ne.jp)、ソフトバンク(@softbank.ne.jp)のメールアドレスだけにマッチさせるには以下の正規表現を使います。
\b[a-zA-Z0-9._%+-]+@(ezweb|docomo|softbank)\.ne\.jp\b
楽天モバイル(@rakumail.jp)も含める場合は以下のようになります。
\b[a-zA-Z0-9._%+-]+@((ezweb|docomo|softbank)\.ne|rakumail)\.jp\b
以下にドメインをキャリア毎に分けた正規表現を記載しておきます。
au
- @ezweb.ne.jp
- @biz.ezweb.ne.jp
- @augps.ezweb.ne.jp
- @ido.ne.jp
- @uqmobile.jp
- @au.com
- @biz.au.com
\b[a-zA-Z0-9._%+-]+@(((((biz|augps)\.)?ezweb|ido)\.ne|uqmobile)\.jp|(biz\.)?au\.com)\b
docomo
- @docomo.ne.jp
- @mopera.net
\b[a-zA-Z0-9._%+-]+@(docomo.ne.jp|mopera.net)\b
SoftBank
- @disney.ne.jp
- @disneymobile.ne.jp
- @i.softbank.jp
- @softbank.ne.jp
- @vodafone.ne.jp
\b[a-zA-Z0-9._%+-]+@((disney(mobile)?\.ne|i\.?softbank|(softbank|vodafone)\.ne)\.jp)\b
Y!mobile(「PHS・旧ウィルコム」以外)
- @emnet.ne.jp
- @emobile.ne.jp
- @emobile-s.ne.jp
- @ymobile1.ne.jp
- @ymobile.ne.jp
- @yahoo.ne.jp
\b[a-zA-Z0-9._%+-]+@(emnet|emobile(-s)?|ymobile1?|yahoo)\.ne\.jp\b
Y!mobile(「PHS・旧ウィルコム」)
- @pdx.ne.jp
- @willcom.com
- @wcm.ne.jp
- @y-mobile.ne.jp
\b[a-zA-Z0-9._%+-]+@((pdx|wcm|y-mobile)\.ne\.jp|willcom\.com)\b
J-PHONE
- @jp-c.ne.jp
- @jp-d.ne.jp
- @jp-h.ne.jp
- @jp-k.ne.jp
- @jp-n.ne.jp
- @jp-q.ne.jp
- @jp-r.ne.jp
- @jp-s.ne.jp
- @jp-t.ne.jp
\b[a-zA-Z0-9._%+-]+@jp-[cdhknq-t]\.ne\.jp\b
ツーカー
- @sky.tkc.ne.jp
- @sky.tkk.ne.jp
- @sky.tu-ka.ne.jp
\b[a-zA-Z0-9._%+-]+@sky\.(tkc|tkk|tu-ka)\.ne\.jp\b
ボーダフォン(Vodafone)
以下のメールアドレスにマッチします。
- @c.vodafone.ne.jp
- @d.vodafone.ne.jp
- @h.vodafone.ne.jp
- @k.vodafone.ne.jp
- @n.vodafone.ne.jp
- @q.vodafone.ne.jp
- @r.vodafone.ne.jp
- @s.vodafone.ne.jp
- @t.vodafone.ne.jp
\b[a-zA-Z0-9._%+-]+@[cdhknq-t]\.vodafone\.ne\.jp\b
携帯電話
090、080、070から始まりxxx-xxxx-xxxxの形式に一致する番号にマッチします。
\b0[789]0-[0-9]{4}-[0-9]{4}\b
郵便番号
以下は〒000-0000もしくは000-0000の郵便番号にマッチします。存在しない郵便番号でもマッチするので注意してください。
〒?\d{3}-\d{4}
URL
"https?://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?"
数値
n桁の整数
n桁の整数にマッチします。
\d{n}
5桁の整数の場合\d{5}となります。
\dは文字クラスで書くと[0-9]となり、先頭に0が来る数値にもマッチします。先頭に0が来る整数を除く場合、先頭のみ[1-9]と0を除いた数値が来るようにして残りを\dとします。先頭で1桁使っているのでmはn-1の値を指定。
[1-9]\d{m}
5桁の場合mには4を指定し、[1-9]\d{4}となります。
指定範囲
1桁
1桁の場合正規表現のメタ文字-を使うことで範囲を指定することができます。
[0-9] // 0~9
[2-5] // 2~5
注意が必要なのは-の前後に指定できる数値は1桁だけです。例えば以下の場合2~58ではなく2~5と8になります。
[2-58] //2~5、8
2桁以上
1桁のときに出した2~58という範囲を指定する場合、2~9、10~50、51~58と分けて考えます。
[2-9] // 2~9
[1-5][0-9] // 10~50
5[1-8] // 51~58
それぞれの範囲の正規表現を論理和(|)で繋げます。\bは単語の区切りを表すメタ文字で、数値の一部分にだけマッチしないようにします。例えば70の7の部分にだけマッチするといったことを防ぎます。
\b([2-9]|[1-5][0-9]|5[1-8])\b
3桁以上のときも分岐を増やすだけでやることは2桁のときと同じです。以下は0~255の範囲の数値を表す正規表現です。[1-9]?[0-9]は0~99、1[0-9]{2}は100~199、2[0-4][0-9]は200~249、25[0-5]は250~255を表しています。
\b[1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]\b
奇数
奇数にマッチします。1の位が1、3、5、7、9のいずれかになれば奇数になります。
\d*[13579]
偶数
偶数にマッチします。1の位が0、2、4、6、8のいずれかになれば偶数になります。
\d*[02468]
都道府県
47都道府県にマッチします。単純に都道府県名を並べただけです。
(北海道|青森県|岩手県|宮城県|秋田県|山形県|福島県|茨城県|栃木県|群馬県|埼玉県|千葉県|東京都|神奈川県|新潟県|富山県|石川県|福井県|山梨県|長野県|岐阜県|静岡県|愛知県|三重県|滋賀県|京都府|大阪府|兵庫県|奈良県|和歌山県|鳥取県|島根県|岡山県|広島県|山口県|徳島県|香川県|愛媛県|高知県|福岡県|佐賀県|長崎県|熊本県|大分県|宮崎県|鹿児島県|沖縄県)
以下は共通部分の都、府、県をまとめたものです。
東京都|北海道|(京都|大阪)府|(青森|岩手|宮城|秋田|山形|福島|茨城|栃木|群馬|埼玉|千葉|神奈川|新潟|富山|石川|福井|山梨|長野|岐阜|静岡|愛知|三重|滋賀|兵庫|奈良|和歌山|鳥取|島根|岡山|広島|山口|徳島|香川|愛媛|高知|福岡|佐賀|長崎|熊本|大分|宮崎|鹿児島|沖縄)県