Jér*_*e G 1 regex scripting perl
我想匹配一个字符串与Perl正则表达式,但我的代码总是无法匹配.
Functions 0.0% (0/1)Functions and exits 0.0% (0/2)Calls 0.0% (0/6)Statement blocks 0.0% (0/24)Implicit blocks 0.0% (0/2)Decisions 0.0% (0/26)Basic conditions 0.0% (0/39)
Run Code Online (Sandbox Code Playgroud)
.*([A-Z][a-z]*\s*[0-9]*\.[0-9]*%\s*\([0-9]*\/[0-9]*\)).*
Run Code Online (Sandbox Code Playgroud)
这似乎适用于几个正则表达式测试网站.
my $regexp = ".*([A-Z][a-z]*\s*[0-9]*\.[0-9]*%\s*\([0-9]*\/[0-9]*\)).*";
if ( $myString =~ /$regexp/i ) { # $myString has the value shown above
print "Regexp OK\n";
}
else {
print "Regexp KO\n";
}
Run Code Online (Sandbox Code Playgroud)
执行此代码的结果总是导致else阻塞,但我不明白为什么.
sim*_*que 10
在定义正则表达式时,您使用的是双引号.这意味着\s将被插值为转义序列,这会破坏您的模式.
请qr//改用.
my $regexp = qr/.*([A-Z][a-z]*\s*[0-9]*\.[0-9]*%\s*\([0-9]*\/[0-9]*\)).*/;
Run Code Online (Sandbox Code Playgroud)
如果你有use warnings,你会得到这个警告.
无法识别的逃脱通过
如果您打印已编译的正则表达式
my $regexp = ".*([A-Z][a-z]*\s*[0-9]*\.[0-9]*%\s*\([0-9]*\/[0-9]*\)).*";
print qr/$regexp/;
Run Code Online (Sandbox Code Playgroud)
你会看到这个输出.
# no backslash here
# V
(?^:.*([A-Z][a-z]*s*[0-9]*.[0-9]*%s*([0-9]*/[0-9]*)).*)
Run Code Online (Sandbox Code Playgroud)
随着反斜杠消失,正则表达式引擎不知道你在谈论空格,s而是看到一个文字.
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |