例如:我不想要
"zero dollar""roze dollar""eroz dollar""one dollar""noe dollar""oen dollar"
但我确实想要
"thousand dollar""million dollar""trillion dollar"
如果我写
not m/ [one | zero] \s dollar /
它不会匹配字符的排列,而外部的“非”功能会使正则表达式与正则表达式中没有“美元”的“大爆炸”相匹配.
m/ <- [one] | [zero] > \s dollar/ # this is Syntax error.
非常感谢你 !
lisprog
解决方法 使用代码断言:您可以匹配任何字词,然后使用<!{}>主张拒绝“一”或“零”排列的词:
say "two dollar" ~~ / :s ^ (\w+) <!{my @disallowed = <one zero>.map(|*.comb.permutations)».join.unique;say "two dollar" ~~ / :s ^ <!before @disallowed>\w+ dollar $/;say "two dollar" ~~ / :s ^ \w+<!after @disallowed> dollar $/;.comb.sort.join eq "eno" | "eorz" }> dollar $/;
使用之前/之后:
或者,您可以预先生成不允许的单词的所有排列,然后使用<!before>之前拒绝它们.或<!after>正则表达式中的断言:
总结以上是内存溢出为你收集整理的perl6在正则表达式中否定其字符的多个单词和排列全部内容,希望文章能够帮你解决perl6在正则表达式中否定其字符的多个单词和排列所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)