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 № 1Musisz 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.