macro p_str(s) s end
x = p"abc"
y = p"def"
z = Regex(join([x,y], "|"))
Operator r „cytat” faktycznie kompiluje wyrażenie regularne dla ciebie, który wymaga czasu. Jeśli masz tylko części wyrażenia regularnego, którego chcesz użyć do zbudowania większego, powinieneś przechowywać części za pomocą "zwykłych cytatów".
A co powiesz na szkicowe reguły ucieczki, które otrzymujesz z "cytatem" a "zwykłymi cytatami", o które pytasz? Jeśli chcesz, szkicowe r zasady „kosztorys”, ale nie od razu skompilować wyrażenia regularnego, a następnie można użyć makra jak:
macro p_str(s) s end
Teraz masz ap „cytat”, który ucieka jak R „kosztorys”, ale po prostu zwraca ciąg znaków.
Nie można wyłączyć tematu, ale można zdefiniować kilka cytatów, aby pozbyć się skomplikowanych alfabetów. Oto niektóre z nich wygodny:
# "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"
Po zakończeniu wytwarzania fragmentów można zrobić przyłączyć i uczynić regex jak:
myre = Regex(join([x, y], "|"))
Tak jak myślałem.
Jeśli chcesz dowiedzieć się więcej o tym, co członkowie jakiś przedmiot (np Regex.pattern) try:
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]
Co jest wyjście dostajesz? –
@UriMikhli Jest to ostatnia linia w pierwszym bloku kodu. –
No cóż, jest 'Regex (join ([x.pattern, y.pattern]," | "))', ale to nie jest bardzo ładne, i nie wiem jak to by się zachowywało w bardziej złożonych przypadkach. – DSM