Seltsamkeit mit gsub

9

Ich habe versucht, gsub zu verwenden, um Nicht-Wort-Zeichen in einer Zeichenfolge in einer Rails-App zu entfernen. Ich habe den folgenden Code verwendet:

%Vor%

aber es ist tatsächlich falsch, es wird auch den Buchstaben k entfernen. Der richtige sollte sein:

%Vor%

Aber mein Problem ist, dass der Unit-Test eines Rails-Controllers, der den obigen Code mit rspec enthält, nicht funktioniert, der Unit-Test tatsächlich besteht. Also habe ich in rspec einen ziemlich extremen Testfall erstellt.

%Vor%

Der obige Testfall sollte fehlschlagen, aber er wird tatsächlich bestanden. Was ist das Problem hier? Warum sollte der Test bestanden werden?

    
Ben 27.04.2012, 15:12
quelle

1 Antwort

5

Ruby 1.9 wechselte zu einer anderen Engine für reguläre Ausdrücke ( Oniguruma ), die für die Verhaltensänderung verantwortlich ist. Das scheint ein Fehler darin zu sein.

In Ihrem Beispiel können Sie das Problem umgehen, indem Sie keine Übereinstimmung zwischen Groß- und Kleinschreibung angeben:

%Vor%

Update: Es sieht so aus, als ob das Entfernen der Zeichengruppe ein anderer Ansatz ist. Könnte es sein, dass negierte Übereinstimmungen in einer Zeichengruppe nicht unbedingt gültig sind?

    
Nevir 27.04.2012 15:34
quelle

Tags und Links