在perl中与该正则表达式匹配的内容:qr!$ line !;

时间:2018-10-12 18:09:58

标签: regex perl

在一个源代码中,我找到了此正则表达式:

my $var = qr!$my_string!;

我根本不知道这匹配什么。我也在网上搜索,对qr的解释很简单。

有人可以用人类语言来解释吗? :)

1 个答案:

答案 0 :(得分:9)

大多数quote-like operators几乎可以接受任何分隔符。 qr也不例外,这里使用 public function handle($request, Closure $next,$htmlString) { $replace = [ '<!--(.*?)-->' => '', //remove comments "/<\?php/" => '<?php ', "/\n([\S])/" => '$1', "/\r/" => '', // remove carriage return "/\n/" => '', // remove new lines "/\t/" => '', // remove tab "/\s+/" => ' ', // remove spaces ]; return preg_replace(array_keys($this->replace), array_values($this->replace), $htmlString); } 作为分隔符。它还评估(“内插”)引用的变量。因此,该行代码使用!变量中的内容构建了正则表达式模式。此模式可能稍后在正则表达式中的代码中使用。这是正常使用。

完整的示例:

$my_string

use warnings; use strict; use feature 'say'; my $str = q(hey); my $re = qr!$str!; my $tgt = q(A_hey_C); $tgt =~ s/$re/B/; say $tgt; #--> A_B_C 的目的是专门构造一个正则表达式模式,因此可以期望上面的qr(问题中的$str)或$my_string中的模式,可能包含正则表达式特定的模式,也可能包含程序中汇编的其他变量。上面的qr仅带有纯字符串,可以很好地在正则表达式中直接使用,因此这不是一个实际的示例。


请参阅  What are the legal delimiters for Perl 5's pick-your-own-quotes operators?