我有一个解析电子邮件正文内容并提取其中几个单词的任务。 我如何提取这些单词并不是很重要,但是我很好奇下面两个选项中哪个更快或更建议。
1. $email =~ /(date) (time) (some other pattern)/;
my $date = $1;
my $time = $2;
my $other_pattern = $3;
2. $email =~ /(date)/;
my $date = $1;
$email =~ /(time)/;
my $time = $1
$email =~ /(some other pattern)/;
my $other_pattern = $1;
其中1个正则表达式行中都匹配的数字1或我一一匹配的2号数字?以及为什么。
答案 0 :(得分:1)
在大多数情况下,首选使用在一个正则表达式中使用三种模式的第一种方法。这是因为它更加熟悉,因此易于维护。日期和时间似乎特别自然地成为一个正则表达式。
请记住添加x
标志以提高可读性。
考虑使用Regexp::Common::time
:https://metacpan.org/pod/Regexp::Common::time。
直接捕获到变量中,而不是$1
等,以提高速度和可读性:
my ($date, $time, $other) = $email =~ m{...}x;