有什么办法将下面的BNF转换成.Net正则表达式吗? (我不是被困在BNF,但我认为这可能是解释什么,我试图做的最好方法)BNF到正则表达式
<field> ::= "<<" <fieldname> <options> ">>"
<options> ::= "" | "(" <option> ")"
<option> ::= "" |
<option> <non-paren> |
<option> <escaped-character>
<escaped-character> ::= "\\" | "\)"
<non-paren> ::= any character but paren
<fieldname> ::= any string that doesn't contain "(" or ">>"
我很接近,但我无法弄清楚如何处理转义“\”和“)”。这将捕获命名组中的字段名称和选项。
<<(?<fieldname>.\*?)(\((?<option>.*?)\))?>>
编辑
事实证明,我在BNFs rustier比我想象的。
我想知道的是,parens是特殊字符。在“选项”部分,他们必须用斜线转义。 (并且斜杠也必须被转义)。
我认为你的选择正则表达式只是一个脱发。 – 2009-01-21 00:15:49