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

在Perl 6中使用修饰符号生成字符类

殳智志
2023-03-14

我想创建一个用户定义的“元音”字符类,该类将匹配任何字面英语元音字母(a、e、I、o、u),以及这些字母中的任何一个与任何可能的变音符号相匹配:ắ ḗú̱åų̄ẹ́等。

这就是我试图做的,但没有用:

> my $vowel = / <[aeiou]> <:Sk>* /
/ <[aeiou]> <:Sk>* /
> "áei" ~~ m:g/ <$vowel> /
(「e」 「i」)

共有2个答案

皇甫建木
2023-03-14

使用/无法将元音与组合字符匹配的原因

正确的解决方案是,正如Hökon在另一个答案中指出的那样,使用忽略副词。您可以将其放在正则表达式之前,如rx: m/

慕宏博
2023-03-14

您可以尝试使用ignoremark:

:ignoremark或:m副词指示regex引擎只比较基本字符,而忽略其他标记,例如组合重音。

对于您的示例:

my $vowel = /:m<[aeiou]>/;
.say for "áeikj" ~~ m:g/ <$vowel> /;

输出:

「á」
「e」
「i」
 类似资料:
  • 问题内容: 在Java中,有一种做法是声明每个变量(局部变量或类),如果参数确实存在,则声明参数final。 尽管这使代码更加冗长,但是这有助于简化代码的读取/抓取,并且由于意图被明确标记,因此还可以防止错误。 您对此有何想法,您会怎么做? 问题答案: 我认为这都与良好的编码风格有关。当然,你可以编写出色而健壮的程序,而无需在任何地方使用很多修饰符,但是当你考虑一下时… 将所有不应该改变的东西加进

  • private private修饰符是我们使用的最限制的修饰符。它表示它只能被自己所在的文件可见。所以如果我们给一个类声明为private,我们就不能在定义这个类之外的文件中使用它。 另一方面,如果我们在一个类里面使用了private修饰符,那访问权限就被限制在这个类里面了。甚至是继承这个类的子类也不能使用它。 所以一等公民,类、对象、接口……(也就是包成员)如果被定义为private,那么它们只

  • 主要内容:VB.Net修饰符列表修饰符是添加了任何编程元素的关键字,以特别强调编程元素在程序中的行为或将被访问 例如,访问修饰符:, , , , 等指示编程元素的访问级别,如:变量,常量,枚举或类。 VB.Net修饰符列表 下表提供了VB.Net修饰符的完整列表: 编号 修饰符 描述 1 指定Visual Basic应将所有字符串封送到美国国家标准学会(ANSI)值,而不管正在声明的外部过程的名称如何。 2 指定源文件开始处的属

  • .lazy 在默认情况下,v-model在每次input事件触发后将输入框的值与数据进行同步 (除了上述输入法组合文字时)。你可以添加lazy修饰符,从而转变为使用change事件进行同步: <!-- 在“change”时而非“input”时更新 --> <input v-model.lazy="msg" > .number 如果想自动将用户的输入值转为数值类型,可以给v-model添加num

  • 修饰符是添加了任何编程元素的关键字,以特别强调编程元素在程序中的行为或将被访问的方式。 例如,访问修饰符:Public,Private,Protected,Friend,Protected Friend等,表示编程元素的访问级别,如变量,常量,枚举或类。 VB.Net中的可用修饰符列表 下表提供了VB.Net修饰符的完整列表 - Sr.No 修改 描述 1 Ansi 指定Visual Basic应

  • 当使用面向对象语言(如C#或Java)编程时,是否有一种好的情况,在类中声明一个公共字段实际上是有效的(我自己总是使用一个属性来使类的用户不依赖数据并支持数据保护)?否则,例如,C#允许你这样做,这感觉很奇怪。