日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

正規表現の例

寄稿者 netapp-alavoie

ソースの命名方法として正規表現によるアプローチを選択した場合は、正規表現の例を参考に、 Cloud Insights の自動解決方法で使用する独自の式を作成できます。

正規表現の形式

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

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

たとえば、このゾーンの命名規則には、次のようなゾーン名があります。

 [Zone number]_[data center]_[hostname]_[device type]_[interface number]
* S123_Miami_hostname1_filer_FC1 のように入力します
* S14_Tampa_hostname2_switch_fc4
* S3991_Boston_hostname3_windows2K_FC0
* S44_Raleigh_hostname4_Solaris_FC1

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

 [hostname]-[data center]-[device type]
そのためには、ホスト名、データセンター、およびデバイスタイプのフィールドを変数に取り込み、それらを使用して出力する必要があります。正規表現は次のようになります。
 .*?_([a-zA-Z0-9]+)_([a-zA-Z0-9]+)_([a-zA-Z0-9]+)_.*
かっこが 3 組あるため、変数 \1 、 \2 、および \3 が入力されます。

この場合、次の形式で出力を受け取ることができます。

 \2-\1-\3
出力は次のようになります。
hostname1-Miami-filer
hostname2-Tampa-switch
hostname3-Boston-windows2K
hostname4-Raleigh-solaris

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

例 1 :ゾーン名の例

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

  • S0032_myComputer1Name - HBA0

  • S0434_myComputer1Name - HBA1

  • S0432_myComputer1Name - HBA3

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

 S[0-9]+_([a-zA-Z0-9]*)[_-]HBA[0-9]
これは、先頭の文字が「 S 」で、そのあとに任意の桁数の数字、アンダースコア、英数字のホスト名( myComputer1Name )、アンダースコアまたはハイフン、大文字の「 HBA 」、 1 桁の数字( 0~9 )の順に続くすべてのゾーンに一致します。ホスト名のみが変数 *\1* に格納されます。

正規表現は次のように構成要素に分割できます。

  • 「 S 」はゾーン名の先頭の文字を表します。これは、ゾーン名の先頭にある「 S 」にのみ一致します。

  • 角かっこで囲まれた文字 [0-9] は、「 S 」のあとの文字が 0~9 の数字でなければならないことを示します。

  • + 記号は、前の角かっこ内の情報が 1 回以上存在している必要があることを示します。

  • (アンダースコア)は、「 S 」のあとの数字の直後に続くゾーン名の文字がアンダースコアでなければならないことを意味します。この例のゾーンの命名規則では、ゾーン名とホスト名の区切りにアンダースコアが使用されています。

  • 必須のアンダースコアのあとにあるかっこは、そのかっこで囲まれたパターンが変数 \1 に格納されることを示します。

  • 角かっこで囲まれた文字 [a-zA-Z0-9] は、すべての英字(大文字と小文字の両方)と数字に一致することを示します。

  • 角かっこのあとの「 * 」(アスタリスク)は、角かっこで囲まれた文字の 0 回以上の繰り返しを示します。

  • 角かっこで囲まれた文字 [__ ] (アンダースコアとダッシュ)は、英数字のパターンのあとにアンダースコアまたはダッシュが必要であることを示します。

  • 正規表現内の文字列「 HBA 」は、この文字列そのものがゾーン名に含まれている必要があることを示します。

  • 最後の角かっこで囲まれた文字 [0-9] は、 0~9 の 1 桁の数字に一致します。

例 2

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

  • ゾーン: * Z_E2FHDBS01_E1NETAPP

  • ホスト名: * E2FHDBS01

  • RegExp : * 。 * ? _ ( E. * ?) _ 。 * ?

例 3

正規表現の最後のセクションの前後にあるかっこ()は、どの部分がホスト名であるかを識別します。「 VSAN3 」の部分がホスト名である場合は、 _ ( [a-zA-Z0-9] ) . * となります

  • ゾーン: * A_VSAN3_SR48KENT_A_CX2578_SPA0

  • ホスト名: * SR48KENT

  • RegExp : * _[a-zA-Z0-9]+_ ( [a-zA-Z0-9] ) . *

例 4 は、複雑な命名パターンを示しています

次のようなゾーン名がある場合は、正規表現を作成できます。

  • myComputerName123 : HBA1_Symm1_FA3

  • myComputerName123 : HBA2_Symm1_FA5

  • myComputerName123 : HBA3_Symm1_FA7

これらを取り込むために使用できる正規表現は次のとおりです。

 ([a-zA-Z0-9]*)_.*
この式で評価された変数 \1 には、 _myComputerName123_ だけが含まれます。

正規表現は次のように構成要素に分割できます。

  • かっこは、そのかっこで囲まれたパターンが変数 \1 に格納されることを示します。

  • 角かっこで囲まれた文字 [a-zA-Z0-9] は、任意の英字(大文字と小文字の両方)と数字に一致することを示します。

  • 角かっこのあとの「 * 」(アスタリスク)は、角かっこで囲まれた文字の 0 回以上の繰り返しを示します。

  • 正規表現内の文字(アンダースコア)は、その前の角かっこの部分で照合された英数字の文字列の直後に続くゾーン名の文字がアンダースコアでなければならないことを意味します。

  • 。(ピリオド)は、任意の文字(ワイルドカード)に一致します。

  • 「 * 」(アスタリスク)は、その前のピリオド(ワイルドカード)が 0 回以上続くことを示します。

    つまり、「 . * 」の組み合わせは任意の文字数の任意の文字を表します。

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

次のようなゾーン名がある場合は、正規表現を作成できます。

  • myComputerName_HBA1_Symm1_FA1

  • myComputerName123_HBA1_Symm1_FA1

これらを取り込むために使用できる正規表現は次のとおりです。

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

正規表現は次のように構成要素に分割できます。

  • かっこは、そのかっこで囲まれたパターンが変数 \1 に格納されることを示します。

  • 「 . * 」(ピリオドとアスタリスク)は、任意の文字数の任意の文字に一致します。

  • 角かっこのあとの「 * 」(アスタリスク)は、角かっこで囲まれた文字の 0 回以上の繰り返しを示します。

  • 。文字は、最短一致を示します。これにより、最後のアンダースコアではなく、最初のアンダースコアでの照合が強制的に停止されます。

  • 文字「 _. * 」は、最初のアンダースコア以降のすべての文字に一致します。

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

次のようなゾーン名がある場合は、正規表現を作成できます。

  • Storage1_Switch1_myComputerName123A_A1_FC1

  • Storage2_Switch2_myComputerName123B_A2_FC2

  • Storage3_Switch3_myComputerName123T_A3_FC3

これらを取り込むために使用できる正規表現は次のとおりです。

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

正規表現は次のように構成要素に分割できます。

  • 「 . * 」(ピリオドとアスタリスク)は、任意の文字数の任意の文字に一致します。

  • 。文字は、最短一致を示します。これにより、最後のアンダースコアではなく、最初のアンダースコアでの照合が強制的に停止されます。

  • アンダースコア文字は、ゾーン名の最初のアンダースコアに一致します。

  • したがって、最初の .?combination は、最初のゾーン名の例では、 Storage1 という文字と一致します。

  • 2 番目の .*?combination は最初のゾーンと同じように動作しますが、最初のゾーン名の例では Switch1 と一致します。

  • かっこは、そのかっこで囲まれたパターンが変数 \1 に格納されることを示します。

  • 角かっこで囲まれた文字 [a-zA-Z0-9] は、任意の英字(大文字と小文字の両方)と数字に一致することを示します。

  • 角かっこのあとの「 * 」(アスタリスク)は、角かっこで囲まれた文字の 0 回以上の繰り返しを示します。

  • 正規表現内の角かっこで囲まれた文字 [ABT] は、ゾーン名に含まれる「 A 」、「 B 」、または「 T 」のいずれか 1 文字に一致します

  • かっこのあとの(アンダースコア)は、 [ABT] で照合された文字のあとにアンダースコアが必要であることを示します。

  • 「 . * 」(ピリオドとアスタリスク)は、任意の文字数の任意の文字に一致します。

その結果、次のいずれかの英数字文字列を含む変数 \1 が原因されます。

  • 前に任意の数の英数字と 2 つのアンダースコアがある

  • 後ろにアンダースコア(および任意の数の英数字)がある。

  • 3 番目のアンダースコアの前に、 A 、 B 、または T の最後の文字を使用した。

例 7

  • ゾーン: * myComputerName123_HBA1_Symm1_FA1

  • ホスト名: * myComputerName123

  • RegExp : * ( [a-zA-Z0-9]+ ) _ 。 *

例 8

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

ゾーン: MyComputerName_HBA1_Symm1_FA1

MyComputerName123_HBA1_Symm1_FA1

Hostname : MyComputerName

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

例 9 :最初のののあとから 2 番目ののの前までのすべての部分を検出します。

  • ゾーン: * Z_MyComputerName_StorageName

  • ホスト名: * MyComputerName

  • RegExp : * 。 * ? _ ( * ?) _ 。 * ?

例 10

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

  • ゾーン: * Storage1_Switch1_MyComputerName123A_A1_FC1

Storage2_Switch2_MyComputerName123B_A2_FC2

Storage3_Switch3_MyComputerName123T_A3_FC3

  • ホスト名: * MyComputerName123

  • RegExp : * 。 * 。 _ 。 * ? _ ( [a-zA-Z0-9]+ ) * [ABT] _ 。 *

例 11

  • ゾーン: * Storage1_Switch1_MyComputerName123A_A1_FC1

  • ホスト名: * MyComputerName123A

  • RegExp : * 。 * 。 _ 。 * ? _ ( [a-zA-Z0-9]+ ) _ 。 * ? _

例 12

角かっこ * の内側にある ^ (キャレット) * は、その式の否定を表します。たとえば、 [^Ff] は大文字の F と小文字の F を除くすべての文字に一致し、 [^a-z] は小文字の a~z を除くすべての文字に一致します。上の例の場合は、 _ 以外の文字に一致します。format ステートメントは、出力ホスト名にを追加します。

  • ゾーン: * mhs_apps44_d_a_10a0_0429

  • ホスト名: * mhs-apps44-d

  • RegExp : * ( [^]+ ) _ ( [AB] )。 * Cloud Insights でのフォーマット: \1-\2 ( [^]+ ) _ ( [^]+ ) _ ( [^]+ )。 * Cloud Insights でのフォーマット: \1-\2-\3

例 13

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

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

  • ホスト名: * E2DOC01N1

  • RegExp : * \\ 。 * ? \\ 。 * ? \\ ( .* ?)

例 14

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

  • ゾーン: * PD_D-RV-W-AD-2_01

  • ホスト名: * pd-RV-W-AD-2

  • RegExp : * [^-] + - ( . * - \d+ ) . *

例 15

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

  • ゾーン: * SRV_USBVM11_F1

  • ホスト名: * US-BV-M11

  • RegExp : * SRV_USBV ( [a-zA-Z0-9]+ ) _F [12]

  • フォーマット: * US-BV-\1