Hat der reguläre Ausdruck von Ruby einen nicht übereinstimmenden Operator wie "! ~" In Perl?
91
Ich möchte nur wissen, ob Ruby Regex einen Nicht-Match-Operator wie !~in Perl hat. Ich halte es für unpraktisch (?!xxx)oder (?<!xxxx)weil Sie keine Regex-Muster in dem xxxTeil verwenden können.
Alles was Sie tun mussten, war zu starten irbund es zu versuchen. Wäre wahrscheinlich schneller gewesen als eine SO-Frage zu stellen.
Mark Thomas
32
Aber nicht schneller als googeln 'Ruby Not Match' und diese Antwort auf SO zu finden;)
Micapam
3
Ich habe eine Weile experimentiert, bevor ich feststeckte, googelte und diese Antwort fand (was funktionierte). Lassen Sie sich niemals auf jemanden fallen, der eine Frage stellt.
Jonathon Nordquist
2
Er formulierte es nicht optimal. Ich denke, er wollte damit sagen: "Denken Sie daran, dass Sie es starten irbund ausprobieren können. Wahrscheinlich sogar schneller als das Posten einer SO-Frage und eine großartige Gelegenheit, die Dinge im Allgemeinen zu testen." So habe ich es jedenfalls gehört.
Mit Ruby 2.4 gibt es auch die etwas schönere Syntax RegExp#match?, die Sie leicht negieren können. Nach den Release Notes , tut es noch weniger Zuweisungen als!~
Es ist eine untergeordnete Lösung. Es ist nicht immer einfach, Regexps auf diese Weise zu konvertieren. Andererseits hängt diese Lösung nicht von der Programmiersprache der obersten Ebene ab;)
irb
und es zu versuchen. Wäre wahrscheinlich schneller gewesen als eine SO-Frage zu stellen.irb
und ausprobieren können. Wahrscheinlich sogar schneller als das Posten einer SO-Frage und eine großartige Gelegenheit, die Dinge im Allgemeinen zu testen." So habe ich es jedenfalls gehört.Antworten:
Ja,
!~
funktioniert einwandfrei - Sie haben wahrscheinlich gedacht, dass dies nicht der Fall ist,Regexp
da es auf der Dokumentationsseite von fehlt . Trotzdem funktioniert es:quelle
!~
ist unter Objekt dokumentiert .RegExp#match?
, die Sie leicht negieren können. Nach den Release Notes , tut es noch weniger Zuweisungen als!~
AFAIK (?! Xxx) wird unterstützt:
quelle