Obsługa wyrażeń regularnych w programie System Center Operations Manager
Podczas tworzenia pakietów administracyjnych może być konieczne uwzględnienie dopasowywania wyrażeń regularnych w odnajdywaniach i grupach. Wyrażenia regularne mogą być również niezbędne do dopasowywania wzorców w kryteriach wyrażeń w monitorach i regułach.
Oryginalna wersja produktu: System Center Operations Manager
Oryginalny numer KB: 2702651
Program Operations Manager obsługuje dwa różne typy wyrażeń regularnych. Musisz wiedzieć, w którym elemencie pracujesz, aby móc wybrać poprawne wyrażenie. Filtry obliczeń członkostwa w grupie i wyrażeń używają wyraźnie różnych składni do dopasowywania wzorców.
Obliczanie grupy
Obliczenia grupy używają PERL
składni wyrażeń regularnych. Domyślnie dopasowanie nie uwzględnia wielkości liter, ale można określić, że wyrażenie musi uwzględniać wielkość liter przy użyciu atrybutu specjalnego w kodzie XML. Aby uzyskać więcej informacji, zobacz SimpleCriteriaType.
Obliczenie grupy znajduje się w pakiecie administracyjnym (MP) za każdym razem, gdy używasz modułu Group Calc
. Wyrażenie GroupCalc
używa operatora do tworzenia dynamicznego MatchesRegularExpression
członkostwa w grupie na podstawie wyrażeń dopasowania wzorca. Implementacja tego operatora przekazuje wyrażenie znalezione w formacie MP XML do nazwy dbo.fn_MatchesRegularExpression
wywołania SQL. Jeśli to wywołanie zwróci wartość 0, dopasowanie ma wartość false. Jeśli zwraca wartość 1, dopasowanie jest prawdziwe.
Ważna
Sama dbo.fn_MatchesRegularExpression
nazwa wywołania SQL uwzględnia wielkość liter, więc MatchesRegularExpression
operator używany w kryteriach członkostwa w grupach dynamicznych również będzie uwzględniał wielkość liter.
Narzędzie GroupCalc obsługuje również dwa specjalne podelementy, które tworzą abstrakcyjne wyrażenia następujących typowych zapytań w stylu regex.
Funkcje specjalne GroupCalc
Element podrzędny GroupCalc | Wyrażenie MP | Odpowiednik regex |
---|---|---|
ContainsSubstring |
^*{O}.*$ (Gdzie {O} jest zastępowany przez podciąg) |
|
MatchesWildcard | ? |
. |
MatchesWildcard | * |
.* |
MatchesWildcard | # |
[0-9] |
Uwaga
Jeśli używany jest jeden z tych dwóch operatorów specjalnych, ocena zawsze uwzględnia wielkość liter.
Kryteria dopasowywania filtrów wyrażeń
Filtry wyrażeń używane w pakietach administracyjnych używają .NET Framework składni wyrażeń wyrażeń regularnych. Nie wszystkie wyrażenia działają. Obsługiwane są jednak następujące .NET Framework elementy składni wyrażeń regularnych. Filtry wyrażeń istnieją w pakiecie administracyjnym podczas korzystania z modułu Expression Eval.
Składnia regex programu Operations Manager
Konstruowania | Rejestr programu Operations Manager |
---|---|
Dowolny znak | . |
Znak w zakresie | [ ] |
Znak nie w zakresie | [^ ] |
Początek wiersza | ^ |
Koniec wiersza | $ |
Lub | | |
Grupa | ( ) |
0 lub 1 dopasowanie | ? |
0 lub więcej dopasowań | * |
1 lub więcej dopasowań | + |
Dokładnie N pasuje | {n} |
Co najmniej N dopasowań | {n, } |
Co najwyżej N dopasowań | { , n} |
Dopasowania od N do M | {n, m} |
Nowy znak wiersza | \n |
Znak tabulatora | \T |
Przykłady wyrażeń regularnych (regex) programu Operations Manager
Przykład 1
Wyszukaj wszystkie dopasowania zawierające jeden ciąg: string1
^(string1)$
Przykład 2
Wyszukaj wszystkie dopasowania zawierające jeden z dwóch ciągów string1
lub string2
:
^(string1)|^(string2)$
Przykład 3
Wyszukaj wszystkie dopasowania do folderów znajdujących się cyklicznie w dwóch ścieżkach folderów(/var/lib/string1/*
lub /var/lib/string2/*
):
^(\/var\/lib\/string1\/.*)|^(\/var\/lib\/string2\/.*)$
Przykład 4
Wyszukaj wszystkie dopasowania zawierające jeden z dwóch ciągów Agent1.contoso.com
lub Agent2.contoso.com
(bez uwzględniania wielkości liter):
^(?i)(agent1.contoso.com)|(?i)(agent2.contoso.com)$
Wyszukaj wszystkie dopasowania, które zawierają Agent
(bez uwzględniania wielkości liter):
^(?i)(agent.*)$
Wyrażenia regularne za pośrednictwem zestawu SDK
Zestaw SDK programu Operations Manager ma operator kryteriów dopasowania do filtrowania obiektów. Ten operator korzysta z tych samych funkcji, co MatchesCriteria
w przypadku GroupCalc, o których wspomniano wcześniej.
Gdy używasz zestawu SDK do konstruowania wyrażenia kryteriów w celu znalezienia obiektów w bazie danych programu Operations Manager, następujące elementy składni są prawidłowe i przydatne:
- Operatory porównania
- Symboli wieloznacznych
- Wartości daty/godziny
- Porównanie liczby całkowitej z wyliczeniem XML
Operatory porównania
Operatorów porównania można użyć podczas tworzenia wyrażenia kryteriów. Prawidłowe operatory są opisane w poniższej tabeli.
Operatory porównania zestawu SDK
Operator | Opis | Przykłady |
---|---|---|
=, == | Oblicza wartość true , jeśli lewe i prawe operandy są równe. | Name = 'mymachine.contoso.com' |
!=, <> | Oblicza wartość true , jeśli lewe i prawe operandy są nierówne. | Name != 'mymachine.contoso.com' |
> | Oblicza wartość true , jeśli lewy operand jest większy niż prawy operand. | Severity > 0 |
< | Oblicza wartość true , jeśli lewy operand jest mniejszy niż prawy operand. | Severity < 2 |
>= | Oblicza wartość true , jeśli lewy operand jest większy lub równy prawemu operandowi. | Severity >= 1 |
<= | Oblicza wartość true , jeśli lewy operand jest mniejszy lub równy prawemu operandowi. | Severity <= 3 |
JAK | Oblicza wartość true , jeśli lewy operand pasuje do wzorca zdefiniowanego przez prawy operand. Użyj znaków w tabeli symboli wieloznaczowych , aby zdefiniować wzorzec. | Name 'LIKE SQL%' Oblicza wartość true , Name jeśli wartość to SQLEngine. Name LIKE '%SQL%' Oblicza wartość true , Name jeśli wartość to MySQLEngine. |
PASUJE | Oblicza wartość true , jeśli lewy operand jest zgodny z wyrażeniem regularnym zdefiniowanym przez prawy operand. | Name MATCHES 'SQL*05' Oblicza wartość true , Name jeśli wartość jest SQL2005. |
MA WARTOŚĆ NULL | Oblicza wartość true , jeśli wartość lewego operandu ma wartość null. | ConnectorId IS NULL Oblicza wartość true , jeśli właściwość ConnectorId nie zawiera wartości. |
NIE MA WARTOŚCI NULL | Oblicza wartość true , jeśli wartość lewego operandu nie ma wartości null. | ConnectorId IS NOT NULL Oblicza wartość true , jeśli właściwość ConnectorId zawiera wartość. |
CALA | Oblicza wartość true , jeśli wartość lewego operandu znajduje się na liście wartości zdefiniowanych przez prawy operand. Uwaga Operator IN jest prawidłowy do użytku tylko z właściwościami typu Guid. |
Id IN ('080F192C-52D2-423D-8953-B3EC8C3CD001', '080F192C-53B2-403D-8753-B3EC8C3CD002') Oblicza wartość true , jeśli wartość Id właściwości jest jednym z dwóch globalnie unikatowych identyfikatorów podanych w wyrażeniu. |
ORAZ | Oblicza wartość true , jeśli lewe i prawe operandy są prawdziwe. | Name = 'SQL%' AND Description LIKE 'MyData%' |
LUB | Oblicza wartość true , jeśli lewy lub prawy operand ma wartość true. | Name = 'SQL%' OR Description LIKE 'MyData%' |
NIE | Oblicza wartość true , jeśli prawidłowy operand nie jest prawdziwy. | NOT (Name = 'IIS' OR Name = 'SQL') |
Symboli wieloznacznych
W poniższej tabeli zdefiniowano symbol wieloznaczny, którego można użyć do utworzenia wzorca podczas korzystania z LIKE
operatora.
Operatory wieloznaczne używane z operatorem LIKE
Symbol wieloznaczny | Opis | Przykład |
---|---|---|
% | Symbol wieloznaczny, który pasuje do dowolnej liczby znaków. | Name LIKE 'SQL%' Oblicza wartość true , Name jeśli wartość to SQLEngine. Name LIKE '%SQL%' Oblicza wartość true , Name jeśli wartość to MySQLEngine. |
_ | Symbol wieloznaczny, który pasuje do pojedynczego znaku. | Name LIKE 'SQL200_' Oblicza wartość true dla następujących Name wartości:SQL2000 SQL2005 Uwaga: wyrażenie oblicza wartość false dla języka SQL200 , ponieważ symbol _ musi być zgodny z dokładnie jednym znakiem Name w wartości. |
[] | Symbol wieloznaczny zgodny z dowolnym znakiem ujętym w zestaw znaków. Uwaga Nawiasy są również używane podczas kwalifikowania odwołań do właściwości MonitoringObject . Aby uzyskać więcej informacji, zobacz Definiowanie zapytań dotyczących obiektów monitorowania. |
Name LIKE 'SQL200[05]' Oblicza wartość true dla następujących Name wartości:SQL2000 SQL2005 Wyrażenie oblicza wartość false dla SQL2003. |
[^] | Symbol wieloznaczny, który pasuje do jednego znaku, który nie jest ujęty w zestaw znaków. | Name LIKE 'SQL200[^05]' Oblicza wartość true dla SQL2003. Wyrażenie oblicza wartość false dla SQL2000 i SQL2005. |
Porównania daty/godziny
W przypadku użycia wartości DateTime w wyrażeniu zapytania użyj ogólnego formatu DateTime (G), aby przekonwertować DateTime
wartość na wartość ciągu. Przykład:
string qStr = "TimeCreated <= '" + myInstant.ToString("G") + "'";
ManagementPackCriteria mpCriteria = new ManagementPackCriteria(qStr);
Przekonwertuj wszystkie wartości daty na format G (GMT), aby dokonać prawidłowych porównań ciągów.
Porównanie wartości całkowitych z wyliczeniami
Jeśli używasz wartości wyliczenia liczby całkowitej w wyrażeniu zapytania, rzutuj wartość wyliczenia na liczbę całkowitą.
Przykład:
string qStr = "Severity > " + (int)ManagementPackAlertSeverity.Warning;
MonitoringAlertCriteria alertCriteria = new MonitoringAlertCriteria(qStr);