【发布时间】:2011-01-12 05:14:17
【问题描述】:
我正在尝试创建一个匹配以下内容的正则表达式:
part1@domain.com
part1:part1 是 0-9 之间的任意 5 位数字
第 2 部分:[可选] 其中@domain.com 是除@yahoo.com 之外的所有域
示例:12345@yahoo.com
我无法找到如何在正则表达式中插入条件。现在只有我的正则表达式匹配数字+域。还需要弄清楚:
- 如何只匹配数字
- 有条件接受除@yahoo.com 以外的所有域
代码:
#!/usr/bin/perl
use strict;
use warnings;
my $regex1 = '^(\d{5})([@]([a-zA-Z0-9_-]+?\.[a-zA-Z]{2,6})+?)';
while ( my $line = <DATA> ) {
chomp $line;
if ($line =~ /$regex1/)
{
print "MATCH FOR:\t$line \n";
}
}
样本数据:
1234
12345@
12345@tandberg
A12345@tandberg.com
12345
12345@tandberg.com
12345@cisco.com
12345@tandberg.amer.com
12345@tandberg.demo
【问题讨论】:
-
这似乎是一个不使用正则表达式就可以解决的问题。我很好奇你走这条路的原因。(不是说我讨厌正则表达式,或者任何东西看起来就像你在用火箭发射器杀死一只老鼠)