所以我遇到了Perl正则表达式“术语”,它允许您删除所有标点符号。这是代码:
$string =~ s/[[:punct:]]//g;.
然而,这会删除所有特殊字符。有没有一种方法可以修改特定的正则表达式,以便例如,它删除除连字符之外的所有特殊字符。正如我在Perl的上一个问题中所述,我是语言的新手,因此显而易见的事情对我来说并不明显。感谢您的帮助:_
答案 0 :(得分:2)
更改您的代码,如下所示删除除连字符
以外的所有标点符号$string =~ s/(?!-)[[:punct:]]//g;
use strict;
use warnings;
my $string = "foo;\"-bar'.,...*(){}[]----";
$string =~ s/(?!-)[[:punct:]]//g;
print "$string\n";
输出:
foo-bar----
答案 1 :(得分:1)
您也可以使用unicode属性:
$string =~ s/[^-\PP]+//g;