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

正規表現の例

共同作成者 netapp-alavoie

ソース命名戦略として正規表現アプローチを選択した場合は、正規表現の例を、Data Infrastructure Insights の自動解決方法で使用する独自の式のガイドとして使用できます。

正規表現のフォーマット

Data Infrastructure Insightsの自動解決用の正規表現を作成するときに、FORMAT というフィールドに値を入力して出力形式を構成できます。

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

たとえば、このゾーン命名規則では次のゾーン名が考えられます。

 [Zone number]_[data center]_[hostname]_[device type]_[interface number]
* S123_マイアミ_ホスト名1_filer_FC1
* S14_タンパ_ホスト名2_スイッチ_FC4
* S3991_ボストン_ホスト名3_windows2K_FC0
* S44_Raleigh_ホスト名4_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

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

例3

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

ゾーン: A_VSAN3_SR48KENT_A_CX2578_SPA0

ホスト名: SR48KENT

正規表現: _[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:パターンなしのゾーン名を示す

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

  • 私のコンピュータ名_HBA1_Symm1_FA1

  • myComputerName123_HBA1_Symm1_FA1

これらをキャプチャするために使用できる正規表現は次のようになります。

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

正規表現は、次の構成要素に分解できます。

  • 括弧は、その中に含まれるパターンが \1 変数に格納されることを示します。

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

  • 括弧の後の * (アスタリスク) は、括弧内の文字が 0 回以上出現することを示します。

  • ? 文字により、一致は非貪欲になります。これにより、最後のアンダースコアではなく、最初のアンダースコアで一致が停止されるようになります。

  • 文字 _.* は、最初に見つかったアンダースコアとそれに続くすべての文字と一致します。

例6:パターン付きコンピュータ名の表示

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

  • ストレージ1_スイッチ1_myComputerName123A_A1_FC1

  • ストレージ2_スイッチ2_myComputerName123B_A2_FC2

  • ストレージ3_スイッチ3_myComputerName123T_A3_FC3

これらをキャプチャするために使用できる正規表現は次のようになります。

 .*?_.*?_([a-zA-Z0-9]*[ABT])_.*
ゾーンの命名規則にはより多くのパターンがあるため、上記の式を使用できます。この式は、A、B、または T で終わるホスト名 (例では myComputerName) のすべてのインスタンスと一致し、そのホスト名を \1 変数に配置します。

正規表現は、次の構成要素に分解できます。

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

  • ? 文字により、一致は非貪欲になります。これにより、最後のアンダースコアではなく、最初のアンダースコアで一致が停止されるようになります。

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

  • したがって、最初の .*?_ の組み合わせは、最初のゾーン名の例の文字 Storage1_ と一致します。

  • 2 番目の .*?_ の組み合わせは最初のものと同じように動作しますが、最初のゾーン名の例の 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

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

例8

この例では、最初の _ の前にあるすべてのものを検索します。

ゾーン:MyComputerName_HBA1_Symm1_FA1

マイコンピュータ名123_HBA1_Symm1_FA1

ホスト名: MyComputerName

正規表現: (.?)_.

例9

この例では、最初の _ の後から 2 番目の _ までのすべてを検索します。

ゾーン: Z_MyComputerName_StorageName

ホスト名: 私のコンピュータ名

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

例10

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

ゾーン: Storage1_Switch1_MyComputerName123A_A1_FC1

ストレージ2_スイッチ2_マイコンピュータ名123B_A2_FC2

ストレージ3_スイッチ3_マイコンピュータ名123T_A3_FC3

ホスト名: MyComputerName123

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

例11

ゾーン: Storage1_Switch1_MyComputerName123A_A1_FC1

ホスト名: MyComputerName123A

RegExp: .?.?([a-zA-z0-9]+).*?

例12

角括弧内の ^ (サーカムフレックスまたはキャレット) は式を否定します。たとえば、[^Ff] は大文字または小文字の F 以外のすべてを意味し、[^az] は小文字の a から z 以外のすべてを意味し、上記の例では _ 以外のすべてを意味します。フォーマット ステートメントは、出力ホスト名に「-」を追加します。

ゾーン: mhs_apps44_d_A_10a0_0429

ホスト名: mhs-apps44-d

正規表現: ()_([AB]).* Data Infrastructure Insightsでの形式: \1-\2 ([^_])_ ()_([^_]).* Data Infrastructure Insightsでの形式: \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