macro p_str(s) s end
x = p"abc"
y = p"def"
z = Regex(join([x,y], "|"))
Der r „Zitat“ Operator stellt tatsächlich einen regulären Ausdruck für Sie, die Zeit in Anspruch nimmt. Wenn Sie nur Teile eines regulären Ausdrucks haben, die Sie zum Erstellen eines größeren verwenden möchten, sollten Sie die Teile mit "normalen Anführungszeichen" speichern.
Aber was ist mit den skizzenhaften Entweichen Regeln, die Sie mit r "Zitat" im Vergleich zu "regulären Anführungszeichen" Sie fragen? Wenn Sie das skizzenhaft r „Zitat“ Regeln wollen, aber nicht einen regulären Ausdruck kompilieren sofort dann können Sie einen Makro wie verwenden:
macro p_str(s) s end
Jetzt haben Sie ap „Zitat“, das wie ein r „Zitat“ entkommt aber nur Gibt eine Zeichenfolge zurück.
Nicht um Thema zu gehen, aber Sie könnten eine Reihe von Zitaten für den Umgang mit kniffligen Alphabete definieren. Hier einige praktikabelsten sind:
# "baked\nescape" -> baked\nescape
macro p_mstr(s) s end # p"""raw\nescape""" -> raw\\nescape
macro dq_str(s) "\"" * s * "\"" end # dq"with quotes" -> "with quotes"
macro sq_str(s) "'" * s * "'" end # sq"with quotes" -> 'with quotes'
macro s_mstr(s) strip(lstrip(s)) end # s""" "stripme" """-> "stripme"
Wenn Sie Fragmente fertig machen können Sie tun, um Ihre beitreten und einen regulären Ausdruck machen wie:
myre = Regex(join([x, y], "|"))
Genau wie Sie dachten.
Wenn Sie mehr erfahren möchten über das, was Mitglieder ein Objekt (wie Regex.pattern) hat versuchen:
julia> dump(r"pat")
Regex
pattern: ASCIIString "pat"
options: Uint32 33564672
regex: Array(Uint8,(61,)) [0x45,0x52,0x43,0x50,0x3d,0x00,0x00,0x00,0x00,0x28 … 0x1d,0x70,0x1d,0x61,0x1d,0x74,0x72,0x00,0x09,0x00]
Was ist der Ausgang Sie bekommen? –
@UriMikhli Es ist die letzte Zeile im ersten Codeblock. –
Nun, es gibt 'Regex (join ([x.pattern, y.pattern]," | "))', aber das ist nicht sehr hübsch, und ich weiß nicht, wie es sich in komplexeren Fällen verhalten würde. – DSM