Quello che mi serve è controllare se una determinata stringa corrisponde parzialmente a una determinata espressione regolare. Ad esempio, per la regex ab[0-9]c
, le stringhe "a", "ab", "ab3" e "b3c" sarebbero "corrispondenti", ma non le stringhe "d", "abc" o "a3c". Quello che ho fatto è il clunky a(?:b(?:[0-9](?:c)?)?)?
(che funziona solo per alcune delle corrispondenze parziali, in particolare quelle che "iniziano" per corrispondere), ma poiché questo fa parte di un'API, preferirei dare agli utenti un aspetto più intuitivo modo di inserire le loro espressioni regolari corrispondenti.Esiste un modo elegante per eseguire corrispondenze regolari di espressioni regolari in Java?
Nel caso in cui la descrizione non sia molto chiara (e mi rendo conto che potrebbe non esserlo!), Questa verrà utilizzata per convalidare l'immissione di testo su caselle di testo. Voglio impedire qualsiasi modifica che si tradurrebbe in una stringa non valida, ma non posso semplicemente abbinare la stringa a una regolare espressione regolare, poiché finché non viene immessa completamente, non corrisponderà. Ad esempio, utilizzando la regex sopra (ab[0-9]c
), quando tento di inserire 'a', non è consentito, poiché la stringa "a" non corrisponde alla regex.
Fondamentalmente, è una sorta di inversione startsWith()
che funziona su espressioni regolari. (new Pattern("ab[0-9]c").startsWith("ab3")
dovrebbe restituire true
.)
Qualche idea?
FYI: 'un (:? B? (:?? [0-9] (?: c)))?' Corrisponderà * qualsiasi stringa * che contiene una "a", come "il jazz ". Si desidera usare '^ a (?: B (?: [0-9] (?: c)?)?)? $' In modo che si corrisponda all'intera stringa. – Kip
Tutte le espressioni regolari utilizzate dal client sono semplici come "ab [0-9] c', o sarà necessaria una corrispondenza più complessa (cioè con sottogruppi)? – Kip
Oops ... sì, il^e $ vengono aggiunti automaticamente al regexp, motivo per cui ho trascurato di aggiungerli, grazie. E no, le espressioni regolari non sono così semplici, possono diventare piuttosto complesse, anche se non quanto richiedono sottogruppi. – Tonio