Text im Text suchen

CopWorker

Erfahrenes Mitglied
Hallo zusammen,

ich bin auf der Suche nach einem Text im Text.
Derzeit mach ich dies mit RegEx.

C#:
string strOrigin = @"{"SubTasks":[{"Type":"Release"}]}";

Match mSub = Regex.Match(strOrigin, @"(?<=\[).*?(?=\])");

Die Suche verläuft aber nur zwischen 2 Zeichen und zwar [ und ].
Kann ich auch zwischen einem Text und einem Zeichen suchen?
Und zwar zwischen " "SubTasks":[ " und ' ] '

Vielen Dank.
Grüße von CopWorker
 

Zvoni

Erfahrenes Mitglied
Hast du mal ein Klartext-Beispiel?
DasIstDerStringInWelchemGesuchtWird
DasSollGefundenWerden
 

CopWorker

Erfahrenes Mitglied
Hallo Zvoni,

ja klar.

Hier wird gesucht: {"States":[{"Type":"Response"}],"SubTasks":[{"Type":"Release"}]}
Das wird gesucht: {"Type":"Release"}

Grüße von CopWorker
 

Zvoni

Erfahrenes Mitglied
Hmmm, dirty solution:
Mach nen Split auf den Original-String mit "SubTasks": (Anführungszeichen escapen?) als "Trenner"
Alles links davon sollte in Element 0, alles rechts davon in Element 1 des Ergebnis-Arrays sein.
Dann dein RegEx auf das Element 1 anwenden

Bin mir aber ziemlich sicher, dass es auch direkt per RegeEx geht

EDIT:
versuch das mal (keine Ahnung wie man die Anführungszeichen escaped)
(?<="SubTasks":\[){.*?}(?=\])
Code:
Match mSub = Regex.Match(strOrigin, @"(?<="SubTasks":\[){.*?}(?=\])");
 
Zuletzt bearbeitet:

CopWorker

Erfahrenes Mitglied
Hallo Zvoni,

geht leider nicht.
Das escapen der Anführungszeichen ist nicht das Problem
versuch das mal (keine Ahnung wie man die Anführungszeichen escaped)
(?<="SubTasks":\[){.*?}(?=\])
C#:
Match mSub = Regex.Match(strOrigin, "(?<=\"SubTasks\":[){.*?}(?=])");
Compiler gibt erst mal Ruhe.
Habe aber den Verdacht, dass die Klammern [ ] ohne \ nicht akzepiert werden.

Hab´s jetzt so gemacht.

C#:
//Erst ab "SubTasks" suchen
iBegin = strTask.IndexOf("\"SubTasks\":");
if (iBegin != -1)
{
    strTemp = strTask.Substring(iBegin, strTask.Length - iBegin);
    mSub = Regex.Match(strTask, @"(?<=\[).*?(?=\])"); //Gesamter Inhalt zwischen '[' und ']' erkennen
    strRet = mSub.ToString();
}

Trotzdem vielen Dank für deine Hilfe
Grüße vom CopWorker