Удалить все графические символы Юникода из строки - PullRequest
0 голосов
/ 19 сентября 2019

Как удалить все графические символы Юникода (эмодзи, символы, флаги и т. Д.) Из строки?

Я пробовал:

$text =~ s/[\x{0001F600}-\x{0001F64F}]|[\x{0001F300}-\x{0001F5FF}]|[\x{0001F680}-\x{0001F6FF}]|[\x{0001F1E0}-\x{0001F1FF}]|[\x{2600}-\x{26FF}]//g;

Удаляет некоторые символы, но невсе.

Эти символы оставлены нетронутыми регулярным выражением:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??1010 *

Что я пропустил?

1 Ответ

0 голосов
/ 19 сентября 2019

Я отправляю решение моего вопроса.Это perl-версия ответа здесь

Создан белый список для:

  • все числовые (p {N})
  • буква (p {L})
  • знак (p {M})
  • пунктуация (p {P})
  • пробел / разделитель (p {Z})
  • другое форматирование (p {Cf}) и другие символы выше U + FFFF в Unicode (p {Cs}), а также символы новой строки (\ s)
  • p {L} специально включают символыиз других алфавитов, таких как кириллица, латиница, кандзи и т. д.
$text =~ s/[^\p{L}\p{M}\p{N}\p{P}\p{Z}\p{Cf}\p{Cs}]//g;

или черный список всех специальных символов

$text =~ s/\p{So}//g;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...