14
如何仅将有效的罗马数字与正则表达式匹配?
考虑到我的另一个问题,我决定甚至不能创建一个匹配罗马数字的正则表达式(更不用说会生成它们的无上下文语法) 问题是仅匹配有效的罗马数字。例如,990不是“ XM”,而是“ CMXC” 我为此制作正则表达式的问题是,为了允许或不允许某些字符,我需要回顾一下。让我们以成千上万个为例。 我可以允许M {0,2} C?M(允许900、1000、1900、2000、2900和3000)。但是,如果匹配是在CM上,则我不允许后面的字符为C或D(因为我已经在900岁了)。 我如何在正则表达式中表达这一点? 如果在正则表达式中根本无法表达它,那么在上下文无关的语法中可以表达它吗?
165
regex
roman-numerals