Ruby regulären Ausdruck das Ende der Zeile
Ich versuche zu finden, die Variablen in einem string, z.B.
"%0" can not be found. %1 Please try again %2
Muss ich wissen, wie die einzelnen Variablen endet (Leerzeichen, Punkt, Ende der Zeile), weil ich die Existenz derselben variable in der übersetzten version dieser Zeichenfolge. Text stammt aus einer CSV-Zeichenfolgen nicht mit einem Zeilenumbruch endet.
Ich bin in der Lage, Sie zu fangen alle außer denen, die am Ende einen string mit:
reg = /[%@!][^\s]+[\s\.\z$]+/
Dachte ich entweder $
oder \z
sollte mit end-of-line, aber das scheint nicht zu funktionieren. Wie kann ich die capture - %2 im obigen Szenario? (wieder, es gibt keinen Zeilenumbruch am Ende)
Du musst angemeldet sein, um einen Kommentar abzugeben.
$
entspricht end-of-line, aber nicht, wenn verwendet, innerhalb von Klammern, wie, dass. Schreiben[$]
ist, wie Sie Aussehen würde, für den normal-dollar-Zeichen-Zeichen '$'.Wenn die Zeichenfolge, die Sie suchen, ist die genaue Zeichenfolge, die Sie oben aufgeführt ist, versuchen Sie
Ihre drei matching-Ergebnisse gespeichert werden, in der speziellen Variablen
$1
,$2
, und$3
.\s
noch entspricht, alle ASCII-Leerzeichen, aber$
entspricht genau$
,\z
entsprichtz
(die` is ignored), and
.` entspricht.
(ob Sie entkommen oder nicht).$
und()
. Soweit ich das beurteilen kann,$
und\z
sind die entsprechenden Operatoren, und beide verlieren Ihre Besondere Bedeutung, wenn sich innerhalb[]
.Okay, ich löste es mit einem anderen Ansatz. Mit einem positiven lookahead arbeitet als Charakter-Klasse ist nicht erforderlich
Für den Beispiel-string, ergibt dies:
/([%@!]\w+)[^%@!]*([%@!]\w+)[^%@!]*([%@!]\w+)/
mir alle drei.