Ich habe die folgende Zeichenfolge, die ich mit RegEx analysieren muss.C# Regex-Extrakt-String in einfache Anführungszeichen eingeschlossen
abc = 'def' and size = '1 x(3\" x 5\")' and (name='Sam O\'neal')
Dies ist ein SQL-Filter, die ich in Token die folgenden Separatoren aufzuspalten möchten verwenden:
(,), >,<,=, whitespace, <=, >=, !=
nach dem String syntaktisch analysiert wird, I der Ausgang sein möchten:
abc,
=,
def,
and,
size,
=,
'1 up(3\" x 5\")',
and,
(,
Sam O\'neal,
),
ich habe den folgenden Code versucht:
string pattern = @"(<=|>=|!=|=|>|<|\)|\(|\s+)";
var tokens = new List<string>(Regex.Split(filter, pattern));
tokens.RemoveAll(x => String.IsNullOrWhiteSpace(x));
Ich bin nicht sicher, wie man die Zeichenkette in einfachen Anführungszeichen als ein Token behält. Ich bin neu bei Regex und würde mich über jede Hilfe freuen.
Nach '(' 'Add '[^'] * '|'. –
Danke @ WiktorStribiżew - Ich habe Ihren Vorschlag mit dem folgenden Muster versucht: 'string pattern = @ "(<=|> = |! = | = |> | <| \) | \ (|' [^ '] *' | \ S +) ";" Während das String-Literal '1 bis (3 \ "x 5") "als ein Token angezeigt wird. Aber das wörtliche "Sam O \ 'neal" erscheint als zwei Token –