正则表达式 – 将变量插值为正则表达式

我习惯了Perl但是Perl 6新手

我想在文本变量中托管正则表达式,就像我在perl5中所做的那样:

my $a = 'abababa';
my $b = '^aba';
if ($a =~ m/$b/) {
        print "True\n";
} else {
        print "False\n";
}

但如果我在Perl6中做同样的事情它不起作用:

my $a = 'abababa';
my $b = '^aba';

say so $a ~~ /^aba/;  # True
say so $a ~~ /$b/;    # False

我很困惑……我错过了什么?

你需要仔细看看 Quoting Constructs.

对于这种情况,请将LHS的一部分作为带有尖括号或< {和}>的单独标记

my $a = 'abababa';
my $b = '^aba';
say so $a ~~ /<$b>/;       # True,starts with aba
say so $a ~~ /<{$b}>/;     # True,starts with aba

my $c = '<[0..5]>'
say so $a ~~ /<$c>/;       # False,no digits 1 to 5 in $a
say so $a ~~ /<{$c}>/;     # False,no digits 1 to 5 in $a

一个故事是当你需要将变量传递给限制量词时.这是你只需要使用大括号的地方:

my $ok = "12345678";
my $not_ok = "1234567";
my $min = 8;
say so $ok ~~ / ^ \d ** {$min .. *} $/;         # True,the string consists of 8 or more digits
say so $not_ok ~~ / ^ \d ** {$min .. *} $/;     # False,there are 7 digits only

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...