我试图从字符串中删除撇号和双引号,并注意到有各种版本创建到我正在使用的数据,具体取决于它的创建方式.例如,Word文档倾向于使用这些:
It’s raining again.
What do you mean by “weird”?
文本编辑器是这样的:
It's raining again.
What do you mean by "weird"?
当我浏览各种字符图表和数据时,我注意到引号和撇号还有其他变化,例如:http://www.fileformat.info/info/unicode/char/0022/index.htm
虽然我可以通过并合理地找到它们,但是现有的Perl正则表达式或函数是否会删除所有引号和撇号的变化?
最佳答案 为了删除所有引号和叛逆者,您可以使用
[\p{Pi}\p{Pf}'"]
并用空字符串替换.
见demo
#!/usr/bin/perl
use utf8;
my $st = "“Quotes1” «Quotes2» ‘Quotes3’ 'Quotes4' \"Quotes5\"";
print "Before: $st\n";
$st =~ s/[\p{Pi}\p{Pf}'"]//g;
print "After: $st\n";
“法言”
Before: “Quotes1” «Quotes2» ‘Quotes3’ 'Quotes4' "Quotes5"
After: Quotes1 Quotes2 Quotes3 Quotes4 Quotes5