Gibt es eine Objective-c Regex ersetzen mit Callback / C # MatchEvaluator entspricht?

8

Ich habe ein C # -Projekt, das ich nach Objective-C portieren möchte. Von dem, was ich über Obj-C verstehe, sieht es so aus, als gäbe es eine verwirrende Vielfalt von Regex-Optionen, aber ich sehe nichts über eine Art, eine Ersetzung mit Callback durchzuführen.

Ich suche nach etwas, das dem C # MatchEvaluator-Delegaten oder PHP's preg_replace_callback entspricht. Ein Beispiel für das, was ich in C # machen möchte, ist -

%Vor%

Wie könnte ich das in Objective-C machen? In meiner aktuellen Situation hat der Regex jedoch sowohl Lookahead- als auch Lookbehind-Assertionen, so dass jede Alternative, die das Auffinden der Strings im Voraus und das anschließende Ausführen einer Reihe von String-Ersetzungen betrifft, leider nicht funktioniert.

    
mikel 18.10.2010, 06:58
quelle

2 Antworten

7

Die Foundation verfügt über eine Klasse NSRegularExpression (iOS4 und später), was für Sie nützlich sein kann. Aus der Dokumentation:

  

Die grundlegende Matching-Methode für   NSRegularExpression ist ein Block   Iterator-Methode, die Clients ermöglicht   Liefern ein Block-Objekt, das sein wird   wird jedes Mal aufgerufen, wenn das Reguläre   Ausdruck entspricht einem Teil des   Zielzeichenfolge Es gibt zusätzliche   bequeme Methoden für die Rückgabe aller   die Übereinstimmungen als ein Array, die Summe   Anzahl der Spiele, das erste Spiel,   und die Reichweite der ersten Übereinstimmung.

Zum Beispiel:

%Vor%     
atshum 22.01.2011, 07:55
quelle
3

Ich habe den Code von atshum modifiziert, um es etwas flexibler zu machen:

%Vor%

Scheint für jetzt zu funktionieren (wahrscheinlich braucht ein bisschen mehr Tests)

    
Benjamin Piette 01.11.2012 14:56
quelle