次のバッカスナウア記法(BNF)文法を.Net正規表現に変換する方法はありますか?(私は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
が名前付きグループにキャプチャされます。
<<(?<fieldname>.\*?)(\((?<option>.*?)\))?>>
編集
BNFの文法は思ったよりも錆びていたことがわかりました。
私が得ようとしていたのは、括弧は特殊文字であるということです。「オプション」セクション内では、スラッシュでエスケープする必要があります。(スラッシュもエスケープする必要があります)。