Obecnie próbuję znaleźć nawiasy otwierające w łańcuchu, używając wyrażenia regularnego w Wiązach 0.16 i zastąpić je nawiasem, a następnie spacji. Zamierzam również zastąpić każdy z nawiasów zamykających w ciągu znaków spacją, po której następuje nawias zamykający. Dzięki temu mogę zastąpić spacje przecinkiem, aby oddzielić ciąg znaków. Ciąg Próbuję użyć wyrażenia regularnego na jest tutaj:Znajdowanie i zastępowanie nawiasów w ciągu w wiązach 0.16
((dane "cytowany danych" 123 4.5) (dane (@ # (4,5) "(więcej" "danych)"))!)
Użyłem już wyrażenia regularnego, aby usunąć ukośniki odwrotne używane do uniknięcia cudzysłowów. Do tego użyłem tej funkcji:
getRidOfBackslashes : String -> String
getRidOfBackslashes sExpression =
sExpression
|> Regex.replace Regex.All (Regex.regex "\\g") (\_ -> "")
Potem próbowałem korzystać z następujących funkcji w celu osiągnięcia wcześniej wyznaczonego celu w zakresie nawiasach otwarcia:
createSpacesParentheses sExpression =
sExpression
|> (\_ -> getRidOfBackslashes sExpression)
|> Regex.replace Regex.All (Regex.regex "\(") (\_ -> "(")
Patrząc na różnych javascript regex warcaby mój bardzo proste regex wydaje się robić to, co chcę, ale kompilator Elm daje mi błąd:
(line 1, column 3): unexpected "(" expecting space, "&" or escape code
27│ |> Regex.replace Regex.All (Regex.regex "\(") (\_ -> "(")
^
Maybe <http://elm-lang.org/docs/syntax> can help you figure it out.
Zastanawiam się, czy mam zamiar o tym w odpowiedni sposób i czy ktoś mógłby zaoferować pomoc. Z góry dziękuję.
Jeśli występuje problem z ucieczką, użyj klasy znaków: '[(]'. Ale wydaje się, że możesz również podwójnie uciec przed '(': '\\ (' –
Dziękuję bardzo, że działało idealnie. –