Ho una lista di stringhe. Alcuni di questi sono nella forma 123-...456
. La parte variabile "..." può essere:Come abbinare, ma non catturare, parte di una regex?
- 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 c'è solo un trattino)
Qualsiasi parola diversa da "mela" o "banana" non è valido.
Per questi tre casi, vorrei abbinare rispettivamente "mela", "banana" e "". Si noti che non voglio mai catturare trattino, ma voglio sempre corrispondere a it. Se la stringa non è del formato 123-...456
come descritto sopra, non vi è alcuna corrispondenza.
Come si scrive un'espressione regolare per eseguire questa operazione? Supponiamo che io abbia un sapore che consente di guardare avanti, guardare indietro, cercare e gruppi non catturanti.
L'osservazione chiave qui è che quando si hanno o "mela" o "banana", è inoltre necessario avere il trattino finale, ma non si vuole abbinarlo. E quando stai abbinando la stringa vuota, tu non devi avere il trattino finale. Una regex che incapsula questa affermazione sarà quella giusta, penso.
Dipende dal sapore regex. Quale linguaggio di programmazione e/o gusto regex stai usando? – BoltClock
@BoltClock: aggiunto qualche chiarimento. Grazie per il feedback. –
Vuoi abbinare tutto tranne i trattini? – BrunoLM