一部の特殊文字は、前にエスケープ文字が付いている場合にのみ許可されます

Aug 18 2020

私が構築したい(OCamlのような構文の詳細と、LEXのスタイルで)正規表現を文字列のクラスのための4つの文字は[]#'それらはエスケープ文字が先行している場合にのみ許可されます'

いくつかの有効な例を次に示します。

  • '#Dataabc'#Headersabc'#Totals'[efg123'#Totals']efgabc123

無効な例を次に示します。

  • #Dataabc#Headersabc#Totals[efg123#Totals]efg'#Totals[efg

定義が明確であることを願っています。まず、そのような正規表現を作成する方法を知っている人はいますか?第二に、ocamllexが受け入れることができるような正規表現(lexのスタイルで、よりOCamlのような構文を使用)を構築する方法を知っている人はいますか?

回答

JeffreyScofield Aug 18 2020 at 08:01

いくつかの例を除いて、受け入れられた文字列がどのように見えるかはわかりません。具体的には、小文字と数字が許可され、4つの特殊文字の前に'。が付いている場合にのみ許可されるとします。

これは、36個の1文字の文字列と4個の2文字の文字列のセットのクリーネ閉包によって説明されます。

これは次のようになります:

 (['a' - 'z' '0' - '9'] | '\'' ['\'' '#' '[' ']'])*