Size: a a a

2019 February 22

МБ

Максим Барулин in pro.elixir
Коллеги, а сталкивался кто-нибудь с задачей поиска смайликов в тексте? Придумал такую регулярку Regex.scan(~r/\pC+|\pM+/, "👽❗️✅👽") Но результат несколько неожиданный... Смайлик ❗️ занимает три байта, но почему-то вылезает в отдельный элемент массива, т.е находится как бы 5 элементов вместо 4
Regex.scan(~r/\pC+|\pM+/, "👽❗️✅👽")
[[<<159, 145>>], [<<157, 151>>], [<<143>>], [<<156, 133>>], [<<159, 145>>]]
источник

IB

Ilya Borovitinov in pro.elixir
Максим Барулин
Коллеги, а сталкивался кто-нибудь с задачей поиска смайликов в тексте? Придумал такую регулярку Regex.scan(~r/\pC+|\pM+/, "👽❗️✅👽") Но результат несколько неожиданный... Смайлик ❗️ занимает три байта, но почему-то вылезает в отдельный элемент массива, т.е находится как бы 5 элементов вместо 4
Regex.scan(~r/\pC+|\pM+/, "👽❗️✅👽")
[[<<159, 145>>], [<<157, 151>>], [<<143>>], [<<156, 133>>], [<<159, 145>>]]
Судя по гуглу, регексы в любых языках не очень хорошо справляются с такой проблемой
https://github.com/mathiasbynens/emoji-regex
Вот какое-то предложение на тему, использующее классы символов в юникоде, но там тоже есть проьлемы
источник

IB

Ilya Borovitinov in pro.elixir
Максим Барулин
Коллеги, а сталкивался кто-нибудь с задачей поиска смайликов в тексте? Придумал такую регулярку Regex.scan(~r/\pC+|\pM+/, "👽❗️✅👽") Но результат несколько неожиданный... Смайлик ❗️ занимает три байта, но почему-то вылезает в отдельный элемент массива, т.е находится как бы 5 элементов вместо 4
Regex.scan(~r/\pC+|\pM+/, "👽❗️✅👽")
[[<<159, 145>>], [<<157, 151>>], [<<143>>], [<<156, 133>>], [<<159, 145>>]]
Я бы сказал, что возможно можно использовать https://hexdocs.pm/elixir/String.html#graphemes/1 и проверять каждый на вхождение в MapSet, заполненный всеми эмодзи
источник

МБ

Максим Барулин in pro.elixir
это слишком накладно
источник

IB

Ilya Borovitinov in pro.elixir
Максим Барулин
это слишком накладно
Ну, либо точность, либо регексы
источник

IB

Ilya Borovitinov in pro.elixir
Слишком много edge cases в случае регексов получается
источник

МБ

Максим Барулин in pro.elixir
блин, простая задача, посчитать количество вхождений, а решения простого опять нет...
источник

IB

Ilya Borovitinov in pro.elixir
Максим Барулин
блин, простая задача, посчитать количество вхождений, а решения простого опять нет...
А есть информация о языке?
источник

МБ

Максим Барулин in pro.elixir
о каком?
источник

IB

Ilya Borovitinov in pro.elixir
Где искать эмодзи. Мб можно от обратного, посчитать регексом все, кроме них?
источник

МБ

Максим Барулин in pro.elixir
язык любой может быть
источник

МБ

Максим Барулин in pro.elixir
Regex.scan(~r/\pC+|\pM+/, "🇷🇺")
[[<<159, 135>>], [<<159, 135>>]]
Regex.scan(~r/\w/, "🇷🇺")
[[<<240>>], [<<240>>], [<<186>>]]
Regex.scan(~r/\W/, "🇷🇺")
[[<<159>>], [<<135>>], [<<183>>], [<<159>>], [<<135>>]]
Regex.scan(~r/\W/u, "🇷🇺")
[["🇷"], ["🇺"]]
источник

МБ

Максим Барулин in pro.elixir
Х_Х
источник

IB

Ilya Borovitinov in pro.elixir
Вово
источник

IB

Ilya Borovitinov in pro.elixir
https://stackoverflow.com/questions/43146528/how-to-extract-all-the-emojis-from-text/43147265
Даже на питоне предлагают вхождение каждого символа проверять
источник

AF

Alexander Fyodorov in pro.elixir
iex(11)> Regex.scan(~r/\X/u, "🇷🇺") 
[["🇷🇺"]]
источник

AF

Alexander Fyodorov in pro.elixir
в руби также можно
источник

МБ

Максим Барулин in pro.elixir
Regex.scan(~r/\X/u, "dsfdf🇷🇺") 
[["d"], ["s"], ["f"], ["d"], ["f"], ["🇷🇺"]]
источник

AF

Alexander Fyodorov in pro.elixir
ура? =)
источник

МБ

Максим Барулин in pro.elixir
нет, надо найти только смайлик
источник