【发布时间】:2014-11-23 21:43:30
【问题描述】:
好的,我正在学习如何在 perl 中使用正则表达式,这是我的代码:
my $name = 'Tom Anderson';
if( $name =~ /(\w) (\w)/ )
{
print "Good\n";
print "$1 + $2";
}
输出:good m + A
我的理解是正则表达式会检查$name如下:
一个单词字符后跟一个空格,然后是另一个单词字符,这不是 100% 工作的。如果有人输入另一个名字,说一个中间名 if 语句仍然有效。我只想要两个名字,别无其他。为什么有人进三分就成功了?
当我打印 $1 和 $2 时使用括号捕获给我m 和A。这是为什么?为什么捕获不给我Tom 和Anderson?
【问题讨论】:
-
$name =~ /(\w+) (\w+)/它将匹配\wclass char 1 次或多次。 -
好的,如果我只想要两个名字而不是 3,我该如何限制数量?
-
\w代表字母,\w+代表单词。/(\w+) (\w+)/匹配两个以空格分隔的单词。