/ / Problem z tworzeniem wyrażeń Regex - c #, regex

Problem z tworzeniem wyrażeń Regex - c #, regex

Próbuję utworzyć wyrażenie regularne, które będzie akceptować pewien format polecenia.Kod wzór jest następujący:

Może zaczynać się od $ i mieć dwie następujące wartości: 0-9, A-F, a-f (np .: 00 $ - $ FF) lub Może być dowolną wartością z wyjątkiem "& <>" / "

* jeśli wartość zaczyna się od $ dwóch kolejnych wartości, po tym, jak musi być poprawną wartością heksadecymalną od 00-ff

Do tej pory mam to

Regex correctValue = new Regex("($[0-9a-fA-F][0-9a-fA-F])");

Każda pomoc zostanie bardzo doceniona!

Odpowiedzi:

3 dla odpowiedzi № 1

Musisz tylko dodać symbol "" przed swoim "$" i działa:

        string input = "$00";

Match m = Regex.Match(input, @"^$[0-9a-fA-F][0-9a-fA-F]$");
if (m.Success)
{
foreach (Group g in m.Groups)
Console.WriteLine(g.Value);
}
else
Console.WriteLine("Didn"t match");

2 dla odpowiedzi nr 2

Jeśli podążam za wami poprawnie, wynik nettoktórego szukasz, to każda wartość, której nie ma na liście "& <>" / ", ponieważ żadna kombinacja $ i dwóch znaków alfanumerycznych również nie byłaby na tej liście. W ten sposób możesz wyrazić swoje zdanie:

Regex correctValue = new Regex("[^&<>"/]");

Aktualizacja: ale na wszelki wypadek, gdybyś musiał wiedzieć, jak właściwie dopasować $ 00 - $ FF, to by się stało:

Regex correctValue = new Regex("$[0-9A-Fa-f]{2}");

2 dla odpowiedzi nr 3

W wyrażeniu regularnym $ używać do Asercja kotwicyi oznacza:

Dopasowanie musi wystąpić na końcu ciągu lub przed n na końcu linii lub łańcucha.

spróbuj użyć [$] (Klasa postaci pojedynczego znaku) lub $ (Escape postaci) zamiast tego.