2017-01-30 11 views
1

Мне нужно удалить все Юникод смайликов из QString, поэтому я попытался написать регулярное выражение:регулярного выражения, чтобы удалить все Юникод смайликов в QT5

QRegularExpression uTF8Emojis("([\\xD83D][\\xDE00-\\xDFFF])+"); 

но ничего не обнаружить ...

+0

Попробуйте '' [\\ x {1F600} - \\ x {1F7FF}] + "'. Однако, возможно, emojis, который вы хотите удалить, из другого диапазона Unicode. –

+0

этот синтаксис, похоже, работает, спасибо! – user1403333

ответ

2

поскольку Qt5 QRegularExpression является PCRE питания, вы можете использовать целые кодовые точки для символов внутри \x{...} нотации, нет необходимости определять эти смайликов в виде последовательности байт:

"[\\x{1F600}-\\x{1F7FF}]+" 

Вы можете использовать this online converter: вставить \uD83D\uDE00-\uD83D\uDFFF в поле JavaScript и нажмите Преобразовать, чтобы получить правильные коды в U + шестнадцатеричный поле .

+0

Некоторые из астральных персонажей не охвачены в этом диапазоне, я буду рекомендовать 10000-10FFFF. в соответствии с https://stackoverflow.com/questions/24672834/how-do-i-remove-emoji-from-string/24673322#24673322 –

+1

@ e.jahandar: Да, если на входе не может быть астральных символов один хочет сохранить. Emojis многочисленны, есть больше диапазонов для покрытия. Я просто преобразовал регулярное выражение OP в полезную форму QT. –