Как разделить символ с помощью "||"в эликсире с помощью регулярных выражений? - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь разделить символ, используя ||Пример: "ab || cd" = "aa", "||", "cd" Я пытался использовать:

>>myString = String.split("aa||cd", ~r{(||?)})

Но есть проблема, потому что я не могу использовать |(это эликсир или токен регулярного выражения) Мне нужно регулярное выражение, потому что у меня работают некоторые другие предложения регулярных выражений. Итак ... Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 04 ноября 2019

Вы можете сделать это с помощью регулярного выражения, экранируя символы | и используя include_captures: true:

iex(1)> String.split("aa||bb", ~r{\|\|}, include_captures: true)
["aa", "||", "bb"]

Преимущество использования Elixir состоит в том, что он делает ненужными регулярные выражения во многих ситуациях. ,Например, вы можете сделать то же самое здесь, используя двоичные файлы и понимания, предполагая, что длина aa и bb всегда равна 2:

iex(2)> for <<i::binary-2 <- "aa||bb">>, do: i
["aa", "||", "bb"]
1 голос
/ 04 ноября 2019

String.split("aa||cd", ~r/\b/) добьется цели!

\b - это граница слова!

В этом случае вернется ["aa", "||", "cd", ""]!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...