Ruby string sub ohne regex zurück Referenzen

8

Ich versuche in Ruby eine einfache Zeichenkette zu schreiben.

Das zweite Argument von sub () ist ein langes Stück minimierten JavaScript, in dem reguläre Ausdrücke enthalten sind. Rückverweise in der Regex in dieser Zeichenfolge scheinen das Ergebnis von sub zu beeinflussen, da die ersetzte Zeichenfolge (d. H. Das erste Argument) in der Ausgabezeichenfolge erscheint.

Beispiel:

%Vor%

Ich möchte die Ausgabe:

%Vor%

Nicht:

%Vor%

oder wenn Sie die Regex umgehen

%Vor%

Im Grunde genommen möchte ich eine Möglichkeit, eine String-Sub zu erstellen, die überhaupt keine Regex-Konsequenzen hat - nur eine einfache String-Ersetzung.

    
Andy Hume 15.11.2011, 12:38
quelle

4 Antworten

6

Um zu vermeiden, herauszufinden, wie die Ersatzzeichenfolge entfernt werden kann, verwenden Sie Regex.escape . Es ist praktisch, wenn der Austausch kompliziert ist oder der Umgang damit unnötig ist. Ein kleiner Helfer auf String ist auch nett.

%Vor%     
Dave Newton 15.11.2011 13:51
quelle
3

Sie können auch die Blocknotation verwenden, um es einfacher zu machen (im Gegensatz zu Regexp.escape):

%Vor%     
Matt 15.11.2011 14:05
quelle
2

Verwenden Sie einfache Anführungszeichen und den umgekehrten Schrägstrich:

%Vor%     
J-_-L 15.11.2011 13:39
quelle
0

Nun, da '\&' (also \ gefolgt von & ) als spezielle Regex-Anweisung interpretiert wird, liegt es nahe, den Backslash zu umgehen. In der Tat funktioniert das:

%Vor%

Beachten Sie, dass \\& die literale Zeichenfolge \& darstellt.

    
Marnen Laibow-Koser 15.11.2011 15:07
quelle

Tags und Links