相关疑难解决方法(0)

使用Perl 6中的另一个数组的元素过滤数组的元素

我想过滤以以下元素@array开头的元素@search:

my @array = "aaaaa" .. "fffff";
my @search = "aaaa" .. "cccc";
.put for @array .grep: /^ @search /;
Run Code Online (Sandbox Code Playgroud)

问题是需要19秒.所以,我"预编译"regexgrep,整个程序是这样的:

my @array = "aaaaa" .. "fffff";
my @search = "aaaa" .. "cccc";

my $search = "/@search.join('|')/".EVAL;

.put for @array .grep: * ~~ /^ <$search> /;
Run Code Online (Sandbox Code Playgroud)

现在需要0.444秒.

问题:是否有内置的Perl 6方法来做这些事情?像插入junction一个regex......

perl6 raku

6
推荐指数
1
解决办法
386
查看次数

我可以修改Perl 6中的文字正则表达式吗?

假设我们有一个规则的屈折模式,不能分割成段.例如,它可以是中缀(在单词内添加一些字母)或元音更改('ablaut').考虑德国人的一个例子.

my @words = <Vater Garten Nagel>;
my $search = "/@words.join('|')/".EVAL;

"mein Vater" ~~ $search;                              
say $/;   # ?Vater?
Run Code Online (Sandbox Code Playgroud)

所有三个德语单词都通过将第二个字母'a'更改为'ä'而形成复数.所以'Vater'→'Väter','Garten'→'Gärten','Nagel'→'Nägel'.

有没有办法修改我的$search正则表达式,以便它匹配复数形式?这是我正在寻找的:

my $search_ä = $search.mymethod;
"ihre Väter" ~~ $search_ä;
say $/;  # ?Väter?
Run Code Online (Sandbox Code Playgroud)

当然,我可以修改@words数组并将其"预编译"成新的regex.但最好(如果可能的话)regex直接修改现有的.

perl6

5
推荐指数
1
解决办法
99
查看次数

使用Perl 6中的字符串值从数组中建立联结

这就是我想要做的.它应该很简单,但我无法弄清楚如何正确地做到这一点.

> my @search_keys = <bb cc dd>
[bb cc dd]
> my $search_junc = @search_keys.join('|')
bb|cc|dd
> "bb" eq $search_junc
False
Run Code Online (Sandbox Code Playgroud)

perl6

3
推荐指数
1
解决办法
141
查看次数

标签 统计

perl6 ×3

raku ×1