Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 模式的Perl搜索字符串:**@enron.com_Regex_Perl_Email - Fatal编程技术网

Regex 模式的Perl搜索字符串:**@enron.com

Regex 模式的Perl搜索字符串:**@enron.com,regex,perl,email,Regex,Perl,Email,我正在搜索以@enron.com结尾的所有有效电子邮件地址的字符串 我的作业如下: my $enronAddress =~/^(.+?)@\@enron\.com/i; 这没有做任何赋值,所以我想知道我做错了什么。为什么不先尝试匹配一个简单的“字符串结束”正则表达式?使用Perl的调试器: DB<3> x 'foo@enron.com' =~ /\@enron\.com$/ 0 1 DB<4> x 'foo@enrn.com' =~ /\@enron\.com$/

我正在搜索以@enron.com结尾的所有有效电子邮件地址的字符串

我的作业如下:

my $enronAddress =~/^(.+?)@\@enron\.com/i;

这没有做任何赋值,所以我想知道我做错了什么。

为什么不先尝试匹配一个简单的“字符串结束”正则表达式?使用Perl的调试器:

DB<3> x 'foo@enron.com' =~ /\@enron\.com$/
0  1

DB<4> x 'foo@enrn.com' =~ /\@enron\.com$/
empty array

为什么不先尝试匹配一个简单的“字符串结尾”正则表达式呢?使用Perl的调试器:

DB<3> x 'foo@enron.com' =~ /\@enron\.com$/
0  1

DB<4> x 'foo@enrn.com' =~ /\@enron\.com$/
empty array

您正在对照正则表达式检查未初始化的变量。这可能不是你想要的

如果您在
$address
中有电子邮件地址,您可以执行以下操作:

my $address = 'example@enron.com';
if ($address =~ /^(.+)\@enron\.com$/) {
  my $to = $1;
}

您正在对照正则表达式检查未初始化的变量。这可能不是你想要的

如果您在
$address
中有电子邮件地址,您可以执行以下操作:

my $address = 'example@enron.com';
if ($address =~ /^(.+)\@enron\.com$/) {
  my $to = $1;
}

它不是赋值,而是将未初始化的变量与正则表达式进行比较。没有更多的上下文,很难修复代码,但首先,请将以下内容放在脚本的顶部:

use strict;
use warnings;
从现在开始,在你写的每一个新剧本中都要这样做

那也许是

my $text = <>;
my $addr = $text if $text =~ /\@enron\.com$/;
my$text=;
如果$text=~/\@enron\.com$/,我的$addr=$text;

它不是赋值,而是将未初始化的变量与正则表达式进行比较。没有更多的上下文,很难修复代码,但首先,请将以下内容放在脚本的顶部:

use strict;
use warnings;
从现在开始,在你写的每一个新剧本中都要这样做

那也许是

my $text = <>;
my $addr = $text if $text =~ /\@enron\.com$/;
my$text=;
如果$text=~/\@enron\.com$/,我的$addr=$text;

您是在字符串中查找所有有效地址,还是检查完整字符串是否为有效地址?我不明白你所说的“这不是做任何作业”是什么意思,因为你所写的只是一个正则表达式模式匹配

首先,您的模式中有两个
@
符号,这显然是错误的

很大程度上取决于您认为是一个有效的电子邮件地址,但首先,它将检查<代码> $EnRONoLoad < /C> >的内容是否是有效的地址

if ( $enronAddress =~ /^[^@\s]+\@enron\.com$/i ) { ... }
这将打印出现在
$enronAddress

print "$_\n" for $enronAddress =~ /[^@\s]+\@enron\.com/gi;

您是在字符串中查找所有有效地址,还是检查完整字符串是否为有效地址?我不明白你所说的“这不是做任何作业”是什么意思,因为你所写的只是一个正则表达式模式匹配

首先,您的模式中有两个
@
符号,这显然是错误的

很大程度上取决于您认为是一个有效的电子邮件地址,但首先,它将检查<代码> $EnRONoLoad < /C> >的内容是否是有效的地址

if ( $enronAddress =~ /^[^@\s]+\@enron\.com$/i ) { ... }
这将打印出现在
$enronAddress

print "$_\n" for $enronAddress =~ /[^@\s]+\@enron\.com/gi;

我缩进了你的代码,所以它呈现为代码,嗯。应该有两个@char在里面吗?你可能需要开始了。我缩进了你的代码,所以它呈现为代码,嗯。应该有两个@char吗?你可能需要开始了。我正试图从字符串中提取一个有效的电子邮件地址,谢谢!我正在尝试从字符串中提取有效的电子邮件地址,谢谢!