regex - Perl:删除除特定字符之外的所有非 ASCII 字符

标签 regex perl unicode regex-negation emoticons

我想删除除 Unicode emoticons 之外的所有非 ASCII 字符来自文本文件。我正在使用以下命令来删除所有非 ASCII 字符。

perl -i.bak -pe 's/[^[:ascii:]]//g'

可以修改此命令以排除表情符号字符吗?

编辑:

示例输入:早上好! #快乐#StPatricksDay♣♥😊

示例输出:早上好! #快乐#StPatricksDay😊

最佳答案

您可以像这样在 Perl 中指定范围:

s='Good morning! #Happy #StPatricksDay ♣♥😊'

echo "$s" | perl -C -pe 's/[^[:ascii:]\x{1F600}-\x{1F64F}]+//g'
Good morning! #Happy #StPatricksDay 😊

Reference: Unicode block for emoticons

关于regex - Perl:删除除特定字符之外的所有非 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29191885/

相关文章:

mysql - 在失败的 Perl 循环中更新 MySQL (fetchrow_array)

vim - vim 中的 Unicode 打印

unicode - 如果 Ascii 运算符是可定义的,为什么不可以定义 Unicode 符号?

c# - 提取引号之间的单词并将值存储在变量中

mysql - 使用 odbc 从 perl 访问 mysql

regex - 在 mod_rewrite 规则中转换为小写

perl - "use diagnostics"不起作用

java - Java 和 MYSQL 中的垂直制表符

javascript - 如果字符串开头或结尾的字符在正则表达式中不匹配

regex - 在 linux 和 AIX 中使用正则表达式替换 bash 脚本中的字符串