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:
aber es ist tatsächlich falsch, es wird auch den Buchstaben k
entfernen. Der richtige sollte sein:
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?
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?