最佳答案
考虑到 我的另一个问题,我决定我甚至不能创建一个匹配罗马数字的正则表达式(更不用说一个生成它们的上下文无关文法了)
问题是只匹配有效的罗马数字。 例如,990不是“ XM”,是“ CMXC”
为此创建正则表达式的问题在于,为了允许或不允许某些字符,我需要回过头来看。 举个例子,成千上万个。
我可以允许 M {0,2} C? M (允许900,1000,1900,2000,2900和3000)。但是,如果匹配是在 CM 上,我不能允许下面的字符是 C 或 D (因为我已经在900)。
如何在正则表达式中表达这一点?
如果它在正则表达式中是不可表达的,那么它在上下文无关文法中是可表达的吗?