正規表現ガイド v1.1

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 TESTDB0102

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\.1192.168.0.1 を表現しています。

 ※10\.0\.0\.110.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

   → 本システムで使用しているPHPpreg_match関数での正規表現をチェックするサイトです。
    正規表現の入力フォームへ記入は、前後に必ず / を入力してください。

 

  • IPアドレス・レンジの正規表現作成サイト

http://www.analyticsmarket.com/freetools/ipregex

   → IPアドレス・レンジの最初と最後を入力するだけで、正規表現を作成してくれるサイトです。

 

  • 正規表現可視化&チェッカーサイト

https://www.debuggex.com/?re=&str=

   → 正規表現のチェックと、正規表現の内容を可視化してくれるサイトです。

 

 

 

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています