Beispiele für reguläre Ausdrücke
Wenn Sie den Ansatz mit regulären Ausdrücken als Ihre Quellenbenennungsstrategie ausgewählt haben, können Sie die Beispiele für reguläre Ausdrücke als Leitfaden für Ihre eigenen Ausdrücke verwenden, die in den automatischen Auflösungsmethoden von Data Infrastructure Insights verwendet werden.
Formatieren regulärer Ausdrücke
Beim Erstellen regulärer Ausdrücke für die automatische Auflösung von Data Infrastructure Insights können Sie das Ausgabeformat konfigurieren, indem Sie Werte in ein Feld mit dem Namen FORMAT eingeben.
Die Standardeinstellung ist \1, was bedeutet, dass ein Zonenname, der mit dem regulären Ausdruck übereinstimmt, durch den Inhalt der ersten durch den regulären Ausdruck erstellten Variable ersetzt wird. In einem regulären Ausdruck werden Variablenwerte durch Klammeraussagen erstellt. Wenn mehrere Klammeraussagen vorkommen, werden die Variablen numerisch von links nach rechts referenziert. Die Variablen können im Ausgabeformat in beliebiger Reihenfolge verwendet werden. In die Ausgabe kann auch konstanter Text eingefügt werden, indem dieser zum Feld FORMAT hinzugefügt wird.
Beispielsweise könnten Sie für diese Zonenbenennungskonvention die folgenden Zonennamen haben:
[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
Und Sie möchten vielleicht, dass die Ausgabe das folgende Format hat:
[hostname]-[data center]-[device type] Dazu müssen Sie die Felder Hostname, Rechenzentrum und Gerätetyp in Variablen erfassen und in der Ausgabe verwenden. Der folgende reguläre Ausdruck würde dies bewirken:
.*?_([a-zA-Z0-9]+)_([a-zA-Z0-9]+)_([a-zA-Z0-9]+)_.* Da es drei Klammern gibt, würden die Variablen \1, \2 und \3 ausgefüllt.
Sie können dann das folgende Format verwenden, um die Ausgabe in Ihrem bevorzugten Format zu erhalten:
\2-\1-\3 Ihre Ausgabe würde wie folgt aussehen:
hostname1-Miami-filer hostname2-Tampa-switch hostname3-Boston-windows2K hostname4-Raleigh-solaris
Die Bindestriche zwischen den Variablen stellen ein Beispiel für konstanten Text dar, der in die formatierte Ausgabe eingefügt wird.
Beispiele
Beispiel 1 mit Zonennamen
In diesem Beispiel verwenden Sie den regulären Ausdruck, um einen Hostnamen aus dem Zonennamen zu extrahieren. Sie können einen regulären Ausdruck erstellen, wenn Sie über etwas Ähnliches wie die folgenden Zonennamen verfügen:
-
S0032_myComputer1Name-HBA0
-
S0434_myComputer1Name-HBA1
-
S0432_myComputer1Name-HBA3
Der reguläre Ausdruck, den Sie zum Erfassen des Hostnamens verwenden könnten, wäre:
S[0-9]+_([a-zA-Z0-9]*)[_-]HBA[0-9] Das Ergebnis ist eine Übereinstimmung aller Zonen, die mit S beginnen und auf die eine beliebige Kombination aus Ziffern folgt, gefolgt von einem Unterstrich, dem alphanumerischen Hostnamen (myComputer1Name), einem Unterstrich oder Bindestrich, den Großbuchstaben HBA und einer einzelnen Ziffer (0-9). In der Variable *\1* wird nur der Hostname gespeichert.
Der reguläre Ausdruck kann in seine Komponenten zerlegt werden:
-
„S“ steht für den Zonennamen und leitet den Ausdruck ein. Dies entspricht nur einem „S“ am Anfang des Zonennamens.
-
Die Zeichen [0-9] in Klammern geben an, dass auf „S“ eine Ziffer zwischen 0 und 9 (einschließlich) folgen muss.
-
Das +-Zeichen gibt an, dass die Angabe in der vorhergehenden Klammer 1 oder mehrere Male vorkommen muss.
-
Das _ (Unterstrich) bedeutet, dass auf die Ziffern nach S im Zonennamen unmittelbar nur ein Unterstrichzeichen folgen darf. In diesem Beispiel wird in der Zonenbenennungskonvention der Unterstrich verwendet, um den Zonennamen vom Hostnamen zu trennen.
-
Nach dem erforderlichen Unterstrich zeigen die Klammern an, dass das darin enthaltene Muster in der Variable \1 gespeichert wird.
-
Die eingeklammerten Zeichen [a-zA-Z0-9] geben an, dass es sich bei den übereinstimmenden Zeichen ausschließlich um Buchstaben (unabhängig von der Groß-/Kleinschreibung) und Zahlen handelt.
-
Das * (Sternchen) nach den Klammern gibt an, dass die eingeklammerten Zeichen 0 oder mehr Mal vorkommen.
-
Die eingeklammerten Zeichen [_-] (Unterstrich und Bindestrich) geben an, dass auf das alphanumerische Muster ein Unterstrich oder ein Bindestrich folgen muss.
-
Die Buchstaben HBA im regulären Ausdruck geben an, dass genau diese Zeichenfolge im Zonennamen vorkommen muss.
-
Der letzte Satz eingeklammerter Zeichen [0-9] entspricht einer einzelnen Ziffer von 0 bis einschließlich 9.
Beispiel 2
In diesem Beispiel wird bis zum ersten Unterstrich „“ gesprungen, dann wird E und alles danach bis zum zweiten „“ abgeglichen und dann alles danach übersprungen.
Zone: Z_E2FHDBS01_E1NETAPP
Hostname: E2FHDBS01
Regulärer Ausdruck: .?(E.?).*?
Beispiel 3
Die Klammern „( )“ um den letzten Abschnitt im regulären Ausdruck (unten) geben an, welcher Teil der Hostname ist. Wenn Sie VSAN3 als Hostnamen verwenden möchten, lautet dieser: _([a-zA-Z0-9]).*
Zone: A_VSAN3_SR48KENT_A_CX2578_SPA0
Hostname: SR48KENT
RegExp: _[a-zA-Z0-9]+_([a-zA-Z0-9]).*
Beispiel 4 zeigt ein komplizierteres Benennungsmuster
Sie können einen regulären Ausdruck erstellen, wenn Sie über etwas Ähnliches wie die folgenden Zonennamen verfügen:
-
myComputerName123-HBA1_Symm1_FA3
-
myComputerName123-HBA2_Symm1_FA5
-
myComputerName123-HBA3_Symm1_FA7
Der reguläre Ausdruck, den Sie zum Erfassen dieser Daten verwenden könnten, wäre:
([a-zA-Z0-9]*)_.* Die Variable \1 würde nach der Auswertung durch diesen Ausdruck nur _myComputerName123_ enthalten.
Der reguläre Ausdruck kann in seine Komponenten zerlegt werden:
-
Die Klammern zeigen an, dass das darin enthaltene Muster in der Variable \1 gespeichert wird.
-
Die eingeklammerten Zeichen [a-zA-Z0-9] bedeuten, dass jeder Buchstabe (unabhängig von der Groß-/Kleinschreibung) oder jede Ziffer übereinstimmt.
-
Das * (Sternchen) nach den Klammern gibt an, dass die eingeklammerten Zeichen 0 oder mehr Mal vorkommen.
-
Das Zeichen _ (Unterstrich) im regulären Ausdruck bedeutet, dass der Zonenname unmittelbar nach der alphanumerischen Zeichenfolge, die mit den vorhergehenden Klammern übereinstimmt, einen Unterstrich haben muss.
-
Der . (Punkt) entspricht einem beliebigen Zeichen (einem Platzhalter).
-
Das * (Sternchen) zeigt an, dass der Platzhalter für den vorangehenden Punkt 0 oder mehr Mal vorkommen kann.
Mit anderen Worten: Die Kombination .* steht für ein beliebiges Zeichen, beliebig oft.
Beispiel 5 mit Zonennamen ohne Muster
Sie können einen regulären Ausdruck erstellen, wenn Sie über etwas Ähnliches wie die folgenden Zonennamen verfügen:
-
myComputerName_HBA1_Symm1_FA1
-
myComputerName123_HBA1_Symm1_FA1
Der reguläre Ausdruck, den Sie zum Erfassen dieser Daten verwenden könnten, wäre:
(.*?)_.* Die Variable \1 würde _myComputerName_ (im ersten Zonennamenbeispiel) oder _myComputerName123_ (im zweiten Zonennamenbeispiel) enthalten. Dieser reguläre Ausdruck würde also auf alles vor dem ersten Unterstrich passen.
Der reguläre Ausdruck kann in seine Komponenten zerlegt werden:
-
Die Klammern zeigen an, dass das darin enthaltene Muster in der Variable \1 gespeichert wird.
-
Der .* (Punkt Sternchen) passt zu jedem beliebigen Zeichen, beliebig oft.
-
Das * (Sternchen) nach den Klammern gibt an, dass die eingeklammerten Zeichen 0 oder mehr Mal vorkommen.
-
Das Zeichen ? macht die Übereinstimmung nicht gierig. Dadurch wird die Suche beim ersten Unterstrich beendet und nicht beim letzten.
-
Die Zeichen _.* entsprechen dem ersten gefundenen Unterstrich und allen darauf folgenden Zeichen.
Beispiel 6 mit Computernamen mit einem Muster
Sie können einen regulären Ausdruck erstellen, wenn Sie über etwas Ähnliches wie die folgenden Zonennamen verfügen:
-
Storage1_Switch1_myComputerName123A_A1_FC1
-
Storage2_Switch2_myComputerName123B_A2_FC2
-
Storage3_Switch3_myComputerName123T_A3_FC3
Der reguläre Ausdruck, den Sie zum Erfassen dieser Daten verwenden könnten, wäre:
.*?_.*?_([a-zA-Z0-9]*[ABT])_.* Da die Zonenbenennungskonvention eher einem Muster folgt, könnten wir den obigen Ausdruck verwenden, der alle Instanzen eines Hostnamens (im Beispiel myComputerName) abgleicht, der entweder mit A, B oder T endet, und diesen Hostnamen in die Variable \1 einfügt.
Der reguläre Ausdruck kann in seine Komponenten zerlegt werden:
-
Der .* (Punkt Sternchen) passt zu jedem beliebigen Zeichen, beliebig oft.
-
Das Zeichen ? macht die Übereinstimmung nicht gierig. Dadurch wird die Suche beim ersten Unterstrich beendet und nicht beim letzten.
-
Das Unterstrichzeichen entspricht dem ersten Unterstrich im Zonennamen.
-
Daher entspricht die erste .*?-Kombination den Zeichen Storage1 im ersten Zonennamenbeispiel.
-
Die zweite .*?-Kombination verhält sich wie die erste, entspricht aber Switch1 im ersten Zonennamenbeispiel.
-
Die Klammern zeigen an, dass das darin enthaltene Muster in der Variable \1 gespeichert wird.
-
Die eingeklammerten Zeichen [a-zA-Z0-9] bedeuten, dass jeder Buchstabe (unabhängig von der Groß-/Kleinschreibung) oder jede Ziffer übereinstimmt.
-
Das * (Sternchen) nach den Klammern gibt an, dass die eingeklammerten Zeichen 0 oder mehr Mal vorkommen.
-
Die eingeklammerten Zeichen im regulären Ausdruck [ABT] entsprechen einem einzelnen Zeichen im Zonennamen, das A, B oder T sein muss.
-
Der _ (Unterstrich) nach den Klammern gibt an, dass auf die Zeichenübereinstimmung [ABT] ein Unterstrich folgen muss.
-
Der .* (Punkt Sternchen) passt zu jedem beliebigen Zeichen, beliebig oft.
Das Ergebnis wäre daher, dass die Variable \1 eine beliebige alphanumerische Zeichenfolge enthält, die:
-
wurde durch eine Anzahl alphanumerischer Zeichen und zwei Unterstriche eingeleitet
-
gefolgt von einem Unterstrich (und dann einer beliebigen Anzahl alphanumerischer Zeichen)
-
hatte vor dem dritten Unterstrich ein letztes Zeichen von A, B oder T.
Beispiel 7
Zone: myComputerName123_HBA1_Symm1_FA1
Hostname: meinComputername123
Regulärer Ausdruck: ([a-zA-Z0-9]+)_.*
Beispiel 8
Dieses Beispiel findet alles vor dem ersten _.
Zone: MyComputerName_HBA1_Symm1_FA1
MyComputerName123_HBA1_Symm1_FA1
Hostname: MeinComputername
Regulärer Ausdruck: (.?)_.
Beispiel 9
Dieses Beispiel findet alles nach dem 1. _ und bis zum zweiten _.
Zone: Z_MeinComputername_Speichername
Hostname: MeinComputername
Regulärer Ausdruck: .?(.?).*?
Beispiel 10
Dieses Beispiel extrahiert „MyComputerName123“ aus den Zonenbeispielen.
Zone: Storage1_Switch1_MyComputerName123A_A1_FC1
Storage2_Switch2_MyComputerName123B_A2_FC2
Storage3_Switch3_MyComputerName123T_A3_FC3
Hostname: MeinComputername123
RegExp: .?.?([a-zA-Z0-9]+)[ABT]_.
Beispiel 11
Zone: Storage1_Switch1_MyComputerName123A_A1_FC1
Hostname: MyComputerName123A
RegExp: .?.?([a-zA-z0-9]+).*?
Beispiel 12
Das ^ (Zirkumflex oder Caretzeichen) in eckigen Klammern negiert den Ausdruck. Beispielsweise bedeutet [^Ff] alles außer dem großen oder kleinen F und [^az] bedeutet alles außer den kleinen Buchstaben a bis z und im obigen Fall alles außer dem _. Die Formatanweisung fügt dem Ausgabehostnamen das „-“ hinzu.
Zone: mhs_apps44_d_A_10a0_0429
Hostname: mhs-apps44-d
Regulärer Ausdruck: ()_([AB]).*Format in Data Infrastructure Insights: \1-\2 ([^_])_ ()_([^_]).*Format in Data Infrastructure Insights: \1-\2-\3
Beispiel 13
In diesem Beispiel wird der Speicheralias durch „\“ abgegrenzt und der Ausdruck muss „\\“ verwenden, um zu definieren, dass in der Zeichenfolge tatsächlich „\“ verwendet werden und dass diese nicht Teil des Ausdrucks selbst sind.
Speicheralias: \Hosts\E2DOC01C1\E2DOC01N1
Hostname: E2DOC01N1
Regulärer Ausdruck: \\.?\\.?\\(.*?)
Beispiel 14
Dieses Beispiel extrahiert „PD-RV-W-AD-2“ aus den Zonenbeispielen.
Zone: PD_D-PD-RV-W-AD-2_01
Hostname: PD-RV-W-AD-2
Regulärer Ausdruck: -(.*-\d).*
Beispiel 15
Die Formateinstellung fügt in diesem Fall dem Hostnamen „US-BV-“ hinzu.
Zone: SRV_USBVM11_F1
Hostname: US-BV-M11
Regulärer Ausdruck: SRV_USBV([A-Za-z0-9]+)_F[12]
Format: US-BV-\1