1. 正規表現とは
正規表現とは、文字列のパターンを表現する表記法であり、AMFでは、PCRE正規表現が利用可能となっております。
2. 本システムが使用する正規表現
本システムが使用する正規表現は、PCRE正規表現となります。
PCREとは「Perl Compatible Regular Expressions」の略語で、Perlの正規表現と互換性のあるライブラリのことです。
3. 主なメタ文字
主なメタ文字を以下の通りです。
|
メタ文字 |
意味 |
パターン例 |
パターン例で一致と見なされる文字列 |
|---|---|---|---|
|
(メタ文字なし) |
文字列のどこかにマッチ |
ABC |
12ABC ABCDEFG |
|
^ (ハット) |
先頭を表す |
^123 |
12345 123ABC |
|
$ |
末尾を表す |
789$ |
123456789 ABC789 |
|
| (パイプ) |
何れか1つ |
ABC|123 |
ABC 123 |
|
() |
グループ化 |
(ABC|DEFG)123 |
ABC123 DEFG123 |
|
. (ドット) |
改行以外の1文字 |
A.C |
ABC A1C AEC |
|
* (アスタリスク) |
直前の文字の0文字以上の繰り返し |
AB*
|
A AB ABBBBBBBBB |
|
.* |
全てにマッチ |
||
|
+ (プラス) |
直前の文字の1文字以上の繰り返し |
AB+
|
AB ABBBBBBBBB |
|
? |
直前の文字の0文字以上1文字以下の連続 |
AB? |
A AB |
|
[] |
何れか一つ ※[]内はメタ文字にはならない |
[ABC]123 |
A123 B123 C123 |
|
[^] |
何れか1つ以外 |
[^0-9] |
0~9の数字以外の1文字 |
|
[^a-z] |
小文字のアルファベット以外の1文字 |
||
|
[-] |
この範囲の一つ |
[0-9] |
0~9の数字1文字 |
|
[a-z] |
小文字のアルファベット1文字 |
||
|
[A-Z] |
大文字のアルファベット1文字 |
||
|
[a-zA-Z] |
大文字小文字のアルファベット1文字 |
||
|
{m,n} |
直前の文字がm個以上、n個以下連続した文字列 |
A{3,5} |
AAA AAAA AAAAA |
|
[0-9]{2,3} |
91 912 |
||
|
\ |
メタ文字のエスケープ |
AB\* 12\\ |
AB* 12\ |
|
\ |
特殊な文字表現 (文字クラス) |
\d \D \n \t \s \S \w \W |
[0-9]と同じ [^0-9]と同じ 改行 タブ 空白1文字 空白以外1文字 アルファベットか数字か_1文字 アルファベット、数字、_以外の1文字 |
|
/ |
デリミタ(区切り文字) プログラムの正規表現チェックで使用。 文字列として / を指定する際は、必ず \ でエスケープすること。 |
- |
- |
4. よく使用するメタ文字の利用例
よく使用するメタ文字の利用例です。
1. 複数のホスト名指定
例1:TESTWEB01 ~ TESTWEB09
TESTWEB0[1-9]
※[1-9] で 1~9 の連番を表現しています。
例2:TESTWEB01、02 と TESTDB01、02
TEST(WEB|DB)0[12]
※(WEB|DB) で WEB または DB を表現しています。
2. IPアドレスの指定
例1:168.0.1 ~ 192.168.0.9
192\.168\.0\.[1-9]($|\D)
※[1-9] で 1~9 の連番を表現しています。
※($|\D) で 行末または数字以外を表現しています。
これがない場合、第四オクテットが1~9の後が数字でもマッチするため、11や91などの意図しないIPアドレスも範囲となってしまいます。
例2:168.0.1 と 10.0.0.1
(192\.168\.0\.1|10\.0\.0\.1)($|\D)
※192\.168\.0\.1 で 192.168.0.1 を表現しています。
※10\.0\.0\.1 で 10.0.0.1 を表現しています。
例3:168.0.1 ~ 192.168.0.254
192\.168\.0\.([1-9]|[1-9][0-9]|1[0-9]{2}|2([0-4][0-9]|5[0-4]))($|\D)
※[1-9][0-9] で 10~99 の連番を表現しています。
※1[0-9]{2} で 100~199 の連番を表現しています。
※2([0-4][0-9]|5[0-4]) で 200~254 の連番を表現しています。
例4:168.0.0 ~ 192.168.10.255
192\.168\.([0-9]|10)\.([0-9]|[1-9][0-9]|1[0-9]{2}|2([0-4][0-9]|5[0-5]))($|\D)
※([0-9]|10) で 0~10 の連番を表現しています。
※([0-9]|[1-9][0-9]|1[0-9]{2}|2([0-4][0-9]|5[0-5])) で 0~255 の連番を表現しています。
3. その他
例1:** PROBLEM Service Alert: <任意のホスト名>/http-status is CRITICAL **
\*\* PROBLEM Service Alert:.*\/htps-status is CRITICAL \*\*
※.* で 1文字以上の文字列を表現しています。
例2:** RECOVERY Service Alert: <任意のホスト名>/<任意のドライブ名>:¥ Drive Space is OK **
\*\* RECOVERY Service Alert: .*\/[A-Z]:¥ Drive Space is OK \*\*
※.* で 1文字以上の文字列を表現しています。
※[A-Z] で 大文字アルファベット1文字を表現しています。(AドライブからZドライブを表現)
例3:“172.16.0.1”,<任意の文字列>GigabitEthernet0/<任意のポート番号>, changed state to <upまたはdown>"
\”172\.16\.0\.1\”,.*GigabitEthernet0\/\d*, changed state to (up|down)
※.* で 1文字以上の文字列を表現しています。
※\d* で 1文字以上の数字を表現しています。
※(up|down) で up または down を表現しています。
例4:[syslog監視] から始まる行
^\[syslog監視\]
※^ で 行頭を表現しています。
5. 参考サイト
PHPの正規表現を確認するためのサイトがインターネット上にいくつも公開されております。
その中でも、良く利用するサイトを3つご紹介します。
ただし、公式サイトではなく一般サイトとなるため、結果が保証される訳ではございません。参考程度にご利用ください。
- PHP正規表現チェッカーサイト
http://okumocchi.jp/php/re.php
→ 本システムで使用しているPHPのpreg_match関数での正規表現をチェックするサイトです。
正規表現の入力フォームへ記入は、前後に必ず / を入力してください。
- IPアドレス・レンジの正規表現作成サイト
http://www.analyticsmarket.com/freetools/ipregex
→ IPアドレス・レンジの最初と最後を入力するだけで、正規表現を作成してくれるサイトです。
- 正規表現可視化&チェッカーサイト
https://www.debuggex.com/?re=&str=
→ 正規表現のチェックと、正規表現の内容を可視化してくれるサイトです。