Key / Value Paar mit RegEx erkennen

CopWorker

Erfahrenes Mitglied
Hallo zusammen,

mir fehlt der letzte Funken.

Folgendes:
Ich möchte eine String in ein Key / Value Paar zerlegen die durch ein '=' Zeichen getrennte sind.
Wobei im Value auch weitere '=' enthalten sein dürfen.
z.Bsp.:
C#:
strExpression = "DefaultValue=\"9=neun; 10=zehn\"";

Das funktioniert auch bestens.

C#:
private bool GetKeyValue(string strExpression, ref string strKey, ref string strValue, ref string strDelimiter)
{
    bool BRet = false;
    Match mTemp = Match.Empty;

    mTemp = Regex.Match(strExpression, @"(?<Key>\w+)\s*[=]\s*(?<delimiter>[""'])\s*(?<Value>[^$]+)\s*\k<delimiter>");

    if (mTemp.Success && mTemp.Groups["Key"].Success && mTemp.Success && mTemp.Groups["Value"].Success)
    {
        //Variablentyp aus Typenliste ermitteln
        strKey = mTemp.Groups["Key"].Value;
        strValue = mTemp.Groups["Value"].Value;
        strDelimiter = mTemp.Groups["delimiter"].Value;
        BRet = true;
    }

    return BRet;
}

Das Problem:
Es soll auch bei einem "leeren" Value eine positive Rückmeldung geben (mTemp.Success = true).
C#:
strExpression = "DefaultValue=\"\"";

Dann ist der Value String eben leer.
Wie muss ich das Pattern anpassen, dass das so funktioniert?

Vielen Dank im voraus.
Gruß CopWorker
 
(?<Value>[^$]+) durch (?<Value>[^$]*) ersetzen.
Code:
@"(?<Key>\w+)\s*[=]\s*(?<delimiter>[""'])\s*(?<Value>[^$]*)\s*\k<delimiter>")
 
Lösung
Zurück