【发布时间】:2020-06-19 20:21:26
【问题描述】:
我正在为nand2tetris 项目做一个解析器。我想检查目标字段是否为M|D|MD|A|AM|AD|AMD 以及它们的不同组合方式,例如MA,而不仅仅是AM。
^(M|D|MD|A|AM|AD|AMD)\s*=$
这个正则表达式正确匹配AM=,但不匹配MA=。
我不想列出这些标记的所有可能组合,有没有办法简单地做到这一点?
【问题讨论】:
-
我认为我们可以按顺序列出正则表达式匹配,
^(M|D|DM|A|AM|AD|ADM)\s*=7$以及按顺序匹配的输入标记 -
这个问题可能是重复的,但这是您需要的正则表达式
^([ADM])(?:(?!\1)([ADM])(?:(?!\1|\2)[ADM])?)?\s*=$regex101.com/r/SNhJpf/2 -
谢谢@Nick。您能否显示重复的链接并将此问题标记为重复?
-
我一直在寻找它,但找不到它。我似乎记得在过去几天里看到过类似的东西(它是一个更通用的
(.)(?!\1)(.)(?!\1|\2).),但我再也找不到它了。 -
尼克,发布答案,这样至少我们可以投票给你 m8。
标签: regex nand2tetris