正規表現の例

ソースの命名方法として正規表現による手法を使用する場合は、ここで示す正規表現の例を参考に、OnCommand Insightの自動解決方法で使用する独自の式を作成できます。

正規表現の形式

OnCommand Insightの自動解決に使用する正規表現を作成するときは、FORMATというフィールドに値を入力して出力形式を設定できます。

デフォルトの設定は\1です。これは、正規表現に一致するゾーン名を正規表現で作成される最初の変数の内容に置き換えることを意味します。正規表現では、かっこで囲まれた記述で変数の値が作成されます。かっこで囲まれた記述が複数ある場合、変数は番号(左から右の順)で参照されます。出力形式では任意の順序で変数を使用できます。一定のテキストをFORMATフィールドに追加することで、そのテキストを出力に挿入することもできます。

たとえば、次の命名規則に基づいて、以下のようなゾーン名があるとします。

[Zone number]_[data center]_[hostname]_[device type]_[interface number]

これらを次の形式で出力します。

[hostname]-[data center]- [device type]

これを行うには、ホスト名、データセンター、およびデバイス タイプのフィールドを変数に取り込み、それらを使用して出力する必要があります。正規表現は次のようになります。

.*?_([a-zA-Z0-9]+)_([a-zA-Z0-9]+)_([a-zA-Z0-9]+)_.*

かっこが3組あるため、変数は \1\2、および\3の3つになります。

上記の形式で出力するには、次の形式を使用します。

\2-\1-\3

出力は次のようになります。

hostname1-Miami-filer
hostname2-Tampa-switch
hostname3-Boston-windows2K
hostname4-Raleigh-solaris

変数をつないでいるハイフンは、出力に一定のテキストを挿入した例を示しています。

例1:ゾーン名の例

この例では、正規表現を使用してゾーン名からホスト名を抽出します。次のようなゾーン名があるとします。

これらのホスト名を取り込むための正規表現は次のようになります。

 S[0-9]+_([a-zA-Z0-9]*)[_-]HBA[0-9] 

これは、先頭の文字が「S」で、そのあとに任意の桁数の数字、アンダースコア、英数字のホスト名(myComputer1Name)、アンダースコアまたはハイフン、大文字の「HBA」、1桁の数字(0~9)の順に続くすべてのゾーンに一致します。そのうちのホスト名の部分だけが変数\1に格納されます。

この正規表現の各部分の意味は次のとおりです。

例2

この例では、最初のアンダースコア「_」のあとの「E」から2番目の「_」の前までの部分を照合し、それよりも前とあとの部分は省いています。

ゾーン:Z_E2FHDBS01_E1NETAPP

ホスト名:E2FHDBS01

正規表現:.*?_(E.*?)_.*?

例3

この例の正規表現では、最後にあるかっこ「()」で囲まれた部分をホスト名として識別しています。「VSAN3」の部分がホスト名である場合は、[a-zA-Z0-9]+_([a-zA-Z0-9]+).*となります。

ゾーン:A_VSAN3_SR48KENT_A_CX2578_SPA0

ホスト名:SR48KENT

正規表現:[a-zA-Z0-9]+_[a-zA-Z0-9]+_([a-zA-Z0-9]+).*

例4:複雑な命名パターンの例

次のようなゾーン名があるとします。

これらを取り込むための正規表現は次のようになります。

([a-zA-Z0-9]*)_.*

この式による評価では、変数\1myComputerName123のみが格納されます。

この正規表現の各部分の意味は次のとおりです。

例5:パターンがないゾーン名の例

次のようなゾーン名があるとします。

これらを取り込むための正規表現は次のようになります。

(.*?)_.*

変数\1には、myComputerName(1つ目のゾーン名の例)またはmyComputerName123(2つ目のゾーン名の例)が格納されます。つまり、この正規表現は、最初のアンダースコアの前のすべての部分に一致します。

この正規表現の各部分の意味は次のとおりです。

例6:パターンを含むコンピュータ名の例

次のようなゾーン名があるとします。

これらを取り込むための正規表現は次のようになります。

 .*?_.*?_([a-zA-Z0-9]*[ABT])_.*

このゾーンの命名規則には特定のパターンがあるため、上記のような式を使用できます。この式は「A」、「B」、または「T」のいずれかで終わるすべてのホスト名(この例では「myComputerName」)に一致し、そのホスト名を変数\1に格納します。

この正規表現の各部分の意味は次のとおりです。

以上から、この正規表現では、次を満たす任意の英数字の文字列が変数\1に格納されます。

例7

ゾーン:myComputerName123_HBA1_Symm1_FA1

ホスト名:myComputerName123

正規表現:([a-zA-Z0-9]+)_.*

例8

この例では、最初の「_」の前までのすべての部分を検出します。

ゾーン:MyComputerName_HBA1_Symm1_FA1

MyComputerName123_HBA1_Symm1_FA1

ホスト名:MyComputerName

正規表現:(.*?)_.*

例9

この例では、最初の「_」のあとから2番目の「_」の前までのすべての部分を検出します。

ゾーン:Z_MyComputerName_StorageName

ホスト名:MyComputerName

正規表現: .*?_(.*?)_.*?

例10

この例では、ゾーンの例から「MyComputerName123」を抽出します。

ゾーン:Storage1_Switch1_MyComputerName123A_A1_FC1

Storage2_Switch2_MyComputerName123B_A2_FC2

Storage3_Switch3_MyComputerName123T_A3_FC3

ホスト名:MyComputerName123

正規表現:.*?_.*?_([a-zA-Z0-9]+)*[ABT]_.*

例11

ゾーン:Storage1_Switch1_MyComputerName123A_A1_FC1

ホスト名:MyComputerName123A

正規表現:.*?_.*?_([a-zA-z0-9]+)_.*?_

例12

角かっこの内側にある「^」(キャレット)は、その式の否定を意味します。たとえば、[^Ff]は大文字の「F」と小文字の「f」を除く任意の文字に一致し、[^a-z]は小文字のa~zを除くすべての文字に一致します。この例の場合は、「_」以外の任意の文字に一致します。形式の記述で、出力されるホスト名に「-」を追加しています。

ゾーン:mhs_apps44_d_A_10a0_0429

ホスト名:mhs-apps44-d

正規表現: ([^_]+)_([AB]).* OnCommand Insightでの形式:\1-\2 ([^_]+)_

([^_]+)_([^_]+).* OnCommand Insightでの形式:\1-\2-\3

例13

この例では、ストレージ エイリアスの区切りに「\」が使用されています。この場合、「\」が文字列で実際に使用されており、式の定義の一部ではないことを示すために、「\\」を使用する必要があります。

ストレージ エイリアス:\Hosts\E2DOC01C1\E2DOC01N1

ホスト名:E2DOC01N1

正規表現:\\.*?\\.*?\\(.*?)

例14

この例では、ゾーンの例から「PD-RV-W-AD-2」を抽出します。

ゾーン:PD_D-PD-RV-W-AD-2_01

ホスト名:PD-RV-W-AD-2

正規表現: [^-]+-(.*-\d+).*

例15

この例では、形式の設定でホスト名に「US-BV-」を追加しています。

ゾーン:SRV_USBVM11_F1

ホスト名:US-BV-M11

正規表現:SRV_USBV([A-Za-z0-9]+)_F[12]

形式:US-BV-\1