Dies ist möglicherweise nicht ganz die Frage, die Sie erwarten! Ich möchte keinen regulären Ausdruck, der über Zeilenumbrüche hinweg übereinstimmt. Stattdessen möchte ich einen langen regulären Ausdruck schreiben, den ich aus Gründen der Lesbarkeit in mehrere Codezeilen aufteilen möchte.
Etwas wie:
"bar" =~ /(foo|
bar)/ # Doesn't work!
# => nil. Would like => 0
Kann es gemacht werden?
ruby
regex
code-formatting
Chowlett
quelle
quelle
regexp = /(\d+)(\d+)/x
Die Verwendung von% r mit der Option x ist die bevorzugte Methode.
Siehe dieses Beispiel aus dem Github Ruby Style Guide
regexp = %r{ start # some text \s # white space char (group) # first group (?:alt1|alt2) # some alternation end }x regexp.match? "start groupalt2end"
https://github.com/github/rubocop-github/blob/master/STYLEGUIDE.md#regular-expressions
quelle
Sie können verwenden:
"bar" =~ /(?x)foo| bar/
quelle
/myregex/x
2) Sie können den Freiraummodus mithilfe des Konstrukts (? On-off) umschalten./myregex(?x) with free spacing/
3) Sie können die%r{myregex}x
Syntax verwenden.Anstatt den Regex in der Mitte des Ausdrucks zu schneiden, schlage ich vor, ihn in Teile zu zerlegen:
full_rgx = /This is a message\. A phone number: \d{10}\. A timestamp: \d*?/ msg = /This is a message\./ phone = /A phone number: \d{10}\./ tstamp = /A timestamp: \d*?/ /#{msg} #{phone} #{tstamp}/
Ich mache das gleiche für lange Saiten.
quelle
/x
Modifikator empfahlen, weil ich\s
überall hätte streuen müssen . Das Aufbrechen des regulären Ausdrucks war viel schneller und wohl einfacher zu lesen und zu warten.