繁体   English   中英

Perl正则表达式不响应$

[英]Perl regular expression not responding to $

我有以下代码:

#!/usr/bin/perl
use Test::Simple tests => 2;    
$file = "lalaletc";
$file2 = "lalal";
ok($file =~ m/^lala/);
ok($file2 =~ m/^lala$/);

输出如下:

1..2
ok 1
not ok 2
#   Failed test at ./test.pl line 7.
# Looks like you failed 1 test of 2.

但是$ file2不再有字符,因此我希望它能够通过测试2。为什么没有?

您的变量$file2设置为lalal 那是5个字符。 您的正则表达式为/^lala$/ ,这意味着:

  • 行/字符串的开头
  • 啦啦
  • 行/字符串的结尾

只有4个字符,因为缺少最后一个l 正则表达式不匹配,测试失败。 这是正确的行为。

在这里尝试: http : //rubular.com/r/O0GhEIiVAZ在末尾添加缺少的l ,它将匹配。

这是从此站点获得的一些其他说明

NODE                     EXPLANATION
--------------------------------------------------------------------------------
  ^                        the beginning of the string
--------------------------------------------------------------------------------
  lala                     'lala'
--------------------------------------------------------------------------------
  $                        before an optional \n, and the end of the
                           string

请注意,在这种情况下,您不需要正则表达式。 您还可以使用eq运算符

$在这种情况下匹配字符串/行的结尾。 由于您的字符串中有一个未匹配的突出的“ l”,因此模式匹配失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM