Beberapa karakter khusus diperbolehkan hanya jika diawali dengan karakter escape
Saya ingin membangun sebuah ekspresi reguler (dalam gaya lex, dengan lebih OCaml-seperti sintaks) untuk kelas string, di mana 4 karakter [
, ]
, #
, '
hanya diperbolehkan jika mereka didahului dengan karakter escape'
.
Berikut beberapa contoh yang valid:
'#Data
,abc'#Headers
,abc'#Totals'[efg
,123'#Totals']efg
,abc
,123
Berikut beberapa contoh yang tidak valid:
#Data
,abc#Headers
,abc#Totals[efg
,123#Totals]efg
,'#Totals[efg
Semoga definisinya jelas. Pertama, apakah ada yang tahu cara membuat ekspresi reguler seperti itu? Kedua, apakah ada yang tahu bagaimana membangun ekspresi reguler seperti itu (dalam gaya lex, dengan sintaks yang lebih mirip OCaml) yang dapat diterima oleh ocamllex?
Jawaban
Anda tidak mengatakan string yang diterima terlihat seperti selain dengan beberapa contoh. Hanya untuk konkret, katakanlah huruf kecil dan angka diperbolehkan, dan 4 karakter khusus diperbolehkan hanya jika diawali dengan '
.
Ini, kemudian, dijelaskan oleh penutupan Kleene dari satu set 36 string satu karakter dan 4 string dua karakter.
Yang terlihat seperti ini:
(['a' - 'z' '0' - '9'] | '\'' ['\'' '#' '[' ']'])*