Ich muss Zeichenfolgen wie "/ [\ w \ s] + /" in reguläre Ausdrücke konvertieren.
"/[\w\s]+/" => /[\w\s]+/
Ich habe versucht, verschiedene Regexp
Methoden wie:
Regexp.new("/[\w\s]+/") => /\/[w ]+\//
ähnlich Regexp.compile
und Regexp.escape
. Aber keiner von ihnen kehrt zurück, wie ich erwartet hatte.
Außerdem habe ich versucht, Backslashes zu entfernen:
Regexp.new("[\w\s]+") => /[w ]+/
Aber kein Glück.
Dann habe ich versucht, es einfach zu machen:
str = "[\w\s]+"
=> "[w ]+"
Es entkommt. Wie kann nun die Zeichenfolge unverändert bleiben und in ein reguläres Ausdrucksobjekt konvertiert werden?
quelle
/#{your_regex}/#{options}
.options
ist ein Hash und Ruby ist nicht soooo dynamisch =)Diese Methode entgeht sicher allen Zeichen mit besonderer Bedeutung:
Zum Beispiel
.
wird entkommen, da sie als ‚jedes Zeichen‘ anders interpretiert wird .Denken Sie daran, eine Zeichenfolge in einfachen Anführungszeichen zu verwenden, es sei denn, Sie möchten, dass die reguläre Zeichenfolgeninterpolation aktiviert wird, wobei Backslash eine besondere Bedeutung hat.
quelle
+.
) enthalten kann, die im Regexp interpretiert werden."\n"
eine neue Zeile'\n'
ist, dies jedoch nicht ist.% Notation verwenden:
oder
Von der Hilfe :
quelle
Das Juwel to_regexp kann die Arbeit erledigen.
Sie können auch den Modifikator verwenden:
quelle