当前位置: 首页 > 知识库问答 >
问题:

在Perl 6中作为参数传递正则表达式

顾俊誉
2023-03-14

这是这个问题的延续,可能是一个更奇怪的问题。

例如,我可以使用sub连接两个正则表达式吗?(当然,我明白,如何使用regex做到这一点)

以下代码完全错误,但我希望它可以解释我想做什么:

my Regex sub s12 ( $c, $v) {
   return / <{$c}> <{$v}> /
}

my regex consonant { <[a .. z] -[aeiou]>  }
my regex vowel { <[aeiou]> }

my regex open_syllable { &s12( &consonant, &vowel ) }

"bac" ~~ m:g/ <open_syllable> /;
say $/; # should be 'ba'

共有1个答案

咸育
2023-03-14

你写的基本上是对的,但是你需要稍微调整一下语法。首先,您应该像其他子函数一样声明组合函数。接下来,它似乎要将一个正则表达式插入到另一个正则表达式中,<代码>

sub combine(Regex $a, Regex $b --> Regex) {
    / <$a> <$b> /
}

my regex consonant { <[a .. z] -[aeiou]>  }
my regex vowel { <[aeiou]> }

my regex open_syllable { <{combine(&consonant, &vowel)}> }

"bac" ~~ m:g/ <open_syllable> /;
say ~$/; # output: ba
 类似资料:
  • Perl6正则表达式匹配连接 它为False,因为连词中的“23”与$a中的“23”子字符串匹配,但此子字符串与连词中的“ef”不匹配。这有点违反直觉,因为它更容易解释$a ~~ m/23 如果我有n个正则表达式,我想看看是否所有这些n个正则表达式都匹配相同的整个字符串,而不是匹配整个字符串的相同子字符串部分,那么编写perl6表达式的最佳方法是什么? 在例子中,我真的想做 如果正则表达式的数量很

  • 我有一个lambda表达式,我希望能够传递和重用。代码如下: 这里的关键是,我希望能够将我在这里使用的lambda表达式传递到调用此代码的方法中,以便可以重用它。lambda表达式是我的。查询方法。我假设我想使用Action或Func,但我不太确定它的语法是什么,或者它是如何工作的。谁能给我举个例子吗?

  • 问题内容: 我有这样的查找声明 它给出了答案。但是我需要某个变量值,而不是那个杂乱的值MT。如何实现呢?谢谢。 更新 我试过像“ /。 ” + searchterm +“ ./ ”无效。 问题答案: 除了使用内联语法创建正则表达式外,还可以使用RegExp对象基于字符串创建一个正则表达式

  • 我希望有一个regex来匹配以开头的所有行,后面跟着以开头的任意数量的行。理想情况下,我希望将带有的每一行放在一个组中。 以下是我希望得到的结果: (为了缩短起见,我用了[...]。) 它实际上给了我这个: 我希望我已经说得够清楚了,你能帮我解决这个问题。请不要犹豫,询问更多的细节。

  • 问题内容: 这与正则表达式匹配外括号非常相关,但是,我特别想知道该 正则表达式的递归模式 如何或是否可行? 我尚未找到使用此策略的python示例,因此认为这应该是一个有用的问题! 我已经看到 了一些 索赔 是递归的模式可以用来匹配平衡括号,但使用Python的没有例子正则表达式包(注:重 不 支持递归模式,你需要使用正则表达式)。 一种说法是语法位于: 是开始构造的东西,是可能在构造中间发生的东

  • 问题内容: 我正在尝试制作一个方法,该方法的参数为,等等,然后返回。 我将为该方法提供的所有可能的类均从该方法扩展并具有方法。 我的代码: 致电者: 但是,这根本不起作用。 请问我该怎么做? 问题答案: 我想你想做 希望像这样的东西行得通(我的反思能力真的不是那么好)。