gpt4 book ai didi

regex - 如何清理在PERL中用作文件名的字符串?

转载 作者:行者123 更新时间:2023-12-04 06:11:49 25 4
gpt4 key购买 nike

我有一份工作申请表,人们可以填写他们的姓名和联系信息,并附上简历。

联系人信息将通过电子邮件发送并附上简历。

我想将文件名更改为竞赛编号和名称的组合。

如何清理生成的文件名,以便可以保证其中没有无效字符。到目前为止,我可以删除所有空格并小写字符串。

我想删除所有标点符号(例如撇号)和非字母字符(例如重音符号)。

例如,如果“AndréO'Hara”使用此表格提交了555的简历,那么如果所有可疑字符都被删除并且我最终得到的文件名为:

555-andr-ohara-resume.doc

我可以使用什么正则表达式删除所有非字母字符?

到目前为止,这是我的代码:
 # Create a cleaned up version of competition number + First Name + Last Name number to name the file
my $hr_generated_filename = $cgi->param("competition") . "-" . $cgi->param("first") . "-" . $cgi->param("last");

# change to all lowercase
$hr_generated_filename = lc( $hr_generated_filename );

# remove all whitespace
$hr_generated_filename =~ s/\s+//g;

push @{ $msg->{attach} }, {
Type => 'application/octet-stream',
Filename => $hr_generated_filename.".$file-extension",
Data => $data,
Disposition => 'attachment',
Encoding => 'base64',
};

最佳答案

如果您尝试将字符“列入白名单”,则基本方法应该是使用字符类补码:
[...]在Perl正则表达式中定义了一个字符类,它将与内部定义的任何字符匹配(包括a-z之类的范围)。如果添加^,它将成为补码,因此它匹配方括号内未定义的任何字符。

$hr_generated_filename =~ s/[^A-Za-z0-9\-\.]//g;

这将删除所有非重音拉丁字母,数字,破折号或点。要添加到白名单,只需在 [^...]内添加字符。

关于regex - 如何清理在PERL中用作文件名的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3515722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com