Alcuni caratteri speciali sono consentiti solo se preceduti da un carattere escape
Voglio costruire un'espressione regolare (nello stile di lex, con una sintassi più simile a OCaml) per una classe di stringhe, dove 4 caratteri [
, ]
, #
, '
sono consentiti solo se preceduti da un carattere escape'
.
Ecco alcuni esempi validi:
'#Data
,abc'#Headers
,abc'#Totals'[efg
,123'#Totals']efg
,abc
,123
Ecco alcuni esempi non validi:
#Data
,abc#Headers
,abc#Totals[efg
,123#Totals]efg
,'#Totals[efg
Spero che la definizione sia chiara. Innanzitutto, qualcuno sa come costruire un'espressione così regolare? In secondo luogo, qualcuno sa come costruire un'espressione così regolare (nello stile di lex, con una sintassi più simile a OCaml) che possa essere accettata da ocamllex?
Risposte
Non dici che le stringhe accettate sembrano diverse se non con alcuni esempi. Tanto per concretezza, diciamo che sono consentite lettere minuscole e cifre, ei 4 caratteri speciali sono consentiti solo se preceduti da '
.
Questo, quindi, è descritto dalla chiusura Kleene di un insieme di 36 stringhe di un carattere e 4 stringhe di due caratteri.
Che assomiglia a questo:
(['a' - 'z' '0' - '9'] | '\'' ['\'' '#' '[' ']'])*