Regex Perl正则表达式不响应$
我有以下代码:Regex Perl正则表达式不响应$,regex,perl,Regex,Perl,我有以下代码: #!/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. 但是$
#!/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。为什么不匹配?
$
匹配本例中字符串/行的结尾。由于字符串中存在未匹配的未完成“l”,因此模式匹配失败。$
在本例中匹配字符串/行的结尾。由于字符串中有一个未匹配的“l”,因此模式匹配失败。您的变量$file2
设置为lalal
。这是5个字符。您的正则表达式是/^lala$/
,这意味着:
- 行/字符串的开头
- 拉拉
- 行尾/字符串
l
,所以只有4个字符。正则表达式不匹配,测试失败。这是正确的行为
请在此处尝试:
在末尾添加缺少的l
,它将匹配
以下是一些来自:
注意,对于这种情况,您不需要正则表达式。您也可以使用。您的变量
$file2
设置为lalal
。这是5个字符。您的正则表达式是/^lala$/
,这意味着:
- 行/字符串的开头
- 拉拉
- 行尾/字符串
l
,所以只有4个字符。正则表达式不匹配,测试失败。这是正确的行为
请在此处尝试:
在末尾添加缺少的l
,它将匹配
以下是一些来自:
注意,对于这种情况,您不需要正则表达式。您也可以使用。我认为这不是一个坏问题。这并不意味着投了反对票。每个人都会偶尔犯这些错误。我们都太盲目了,根本看不到丢失的字母或semikolon;它告诉我们尝试了什么;它显示错误消息;写得很清楚;这是我们在一个好问题中所要求的一切。OP可能对REs的了解有限,但这就是他来寻求帮助的原因。这是个好问题+1我认为这不是一个坏问题。这并不意味着投了反对票。每个人都会偶尔犯这些错误。我们都太盲目了,根本看不到丢失的字母或semikolon;它告诉我们尝试了什么;它显示错误消息;写得很清楚;这是我们在一个好问题中所要求的一切。OP可能对REs的了解有限,但这就是他来寻求帮助的原因。这是个好问题+1.
NODE EXPLANATION
--------------------------------------------------------------------------------
^ the beginning of the string
--------------------------------------------------------------------------------
lala 'lala'
--------------------------------------------------------------------------------
$ before an optional \n, and the end of the
string