6. Motivation and Background (Motivazione e contesto)
6. Motivation and Background (Motivazione e contesto)
Mentre le espressioni regolari erano originariamente destinate a descrivere un linguaggio formale (Formal Language) per supportare una funzione di corrispondenza booleana (Boolean Matching Function), sono state migliorate con funzioni di analisi (Parsing Functions) che supportano l'estrazione e la sostituzione di porzioni arbitrarie del testo corrispondente. Con questa accumulazione di funzionalità, le librerie di espressioni regolari di analisi sono diventate più suscettibili a bug e degradazioni delle prestazioni sorprendenti che possono essere sfruttate in attacchi di negazione del servizio (Denial-of-Service Attacks) da parte di un attaccante che controlla l'espressione regolare inviata per l'elaborazione. I-Regexp è progettato per offrire interoperabilità ed essere meno vulnerabile a tali attacchi, con il compromesso che la sua unica funzione è offrire una risposta booleana sul fatto che una sequenza di caratteri corrisponda a un'espressione regolare.
6.1 Implementing I-Regexp (Implementazione di I-Regexp)
Le espressioni regolari XSD sono relativamente facili da implementare o mappare a dialetti di espressioni regolari di analisi ampiamente implementati, con queste eccezioni notevoli:
-
Sottrazione di classe di caratteri (Character Class Subtraction). Questa è una funzionalità molto utile in molte specifiche, ma è sfortunatamente per lo più assente dai dialetti di espressioni regolari di analisi. Pertanto, è omessa da I-Regexp.
-
Escape multi-carattere (Multi-Character Escapes).
\d,\w,\se le loro classi complementari in maiuscolo mostrano una grande variabilità tra i gusti di espressioni regolari. Pertanto, sono omessi da I-Regexp. -
Non tutte le implementazioni di espressioni regolari supportano l'accesso alle tabelle Unicode (Unicode Tables) che consentono l'esecuzione di costrutti come
\p{Nd}, sebbene la funzionalità\p/\Pin generale sia ora abbastanza ampiamente disponibile. Sebbene, in linea di principio, sia possibile tradurre questi in corrispondenze di classi di caratteri, anche questo richiede l'accesso a quelle tabelle. Pertanto, le librerie di espressioni regolari in ambienti severamente vincolati potrebbero non essere in grado di supportare la conformità I-Regexp.