我有一个Perl字符串,只允许包含字母A到Z(大写和小写),数字0到9以及"-"和"_"字符。我想从字符串中删除所有不匹配的字符,其余的保持不变。
所以"Hell@_World"会变成"Hell_World"。
您可以使用^
(非)正则表达式进行替换。 虽然 Perl 提供了快捷方式,但您可以像这样更清楚地看到这些部分:
$string =~ s/[^[:alnum:]_-]//g;
其中[:alnum:]
是字母和数字字符的字符类。 "-
"在括号中排在最后,以避免将其混淆为一系列字符的一部分。