Ho un elenco di stringhe. Alcuni di loro sono nella forma 123-...456. La parte variabile "..." può essere:
- la stringa "mela" seguita da un trattino, ad es
123-apple-456 - la stringa "banana" seguita da un trattino, ad es
123-banana-456 - una stringa vuota, ad es.
123-456(nota che c'è solo un trattino)
Qualsiasi parola diversa da "mela" o "banana" non è valida.
Per questi tre casi, vorrei abbinare rispettivamente "mela", "banana" e "". Nota che non voglio mai catturare il trattino, ma voglio sempre abbinarlo . Se la stringa non ha la forma 123-...456descritta sopra, allora non c'è alcuna corrispondenza.
Come scrivo un'espressione regolare per farlo? Supponiamo che abbia un sapore che consenta lookahead, lookbehind, lookaround e gruppi non catturanti.
L'osservazione chiave qui è che quando hai "mela" o "banana", devi anche avere il trattino finale, ma non vuoi abbinarlo. E quando abbini la stringa vuota, non devi avere il trattino finale. Una regex che incapsula questa affermazione sarà quella giusta, credo.