1

我想为一类字符串构造一个正则表达式(以 lex 的风格,具有更类似于 OCaml 的语法) ,其中4 个字符[, ], #,'仅在它们前面有一个转义字符时才允许'

以下是一些有效的示例:

  • '#Data, abc'#Headers, abc'#Totals'[efg, 123'#Totals']efg, abc,123

以下是一些无效的示例:

  • #Data, abc#Headers, abc#Totals[efg, 123#Totals]efg,'#Totals[efg

希望定义清楚。首先,有谁知道如何构造这样的正则表达式?其次,有谁知道如何构造这样一个可以被 ocamllex 接受的正则表达式(以 lex 的风格,具有更类似于 OCaml 的语法) ?

4

1 回答 1

0

除了一些示例之外,您不会说接受的字符串看起来像。只是为了具体起见,假设允许使用小写字母和数字,并且仅允许前面有 4 个特殊字符'

然后,这由一组 36 个单字符字符串和 4 个双字符字符串的 Kleene 闭包来描述。

看起来像这样:

 (['a' - 'z' '0' - '9'] | '\'' ['\'' '#' '[' ']'])*
于 2020-08-18T01:01:45.167 回答