regex - Perl 正则表达式匹配表情符号

标签 regex perl

我试图从字符串中删除某些表情符号,但我不知道如何匹配由特殊字符和字母组成的表情符号,例如 :D 或 :-D(它适用于像“:- )”)。我试过了

$message =~ s/\:D//;

和其他一些变体,但似乎没有任何效果。我哪里错了?

编辑:我其实很蠢,没有意识到我在这个命令之前把所有的字母都变成了小写,所以所有的表情符号都已经变成了“:d”。感谢您的帮助。

最佳答案

use strict; use warnings;

my $s = "Hello ;-) :D :-D <3 World!";
my @emoticons = qw' ;-) :D :-D <3 ';

my $pat = join '|', map qr/\Q$_\E/, @emoticons;
$s =~ s/$pat//g;
$s =~ s/ +/ /g;

print "$s\n";

输出:

Hello World!

关于regex - Perl 正则表达式匹配表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10439637/

相关文章:

regex - -匹配成功但不更新 $matches

java - 无法追踪为什么这个正则表达式代码无限运行

regex - 一个简单的Perl正则表达式保证永远不会匹配字符串?

perl - 捕获稀疏矩阵的非零元素、计数和索引

perl - 使用 Perl 和 GtkBuilder 连接信号

perl - 使用 eval 插入变量时避免使用 PerlCritic

正则表达式匹配以特殊字符开头的单词边界

javascript - 强制给定的 RegExp 不区分大小写

java - 将列表转换为索引数组

linux - 如何知道我的程序是手动执行还是由 cron 执行或从另一个脚本执行