È possibile utilizzare un'espressione regolare per abbinare tutte le parole ma abbinare parole univoche solo una volta? Sono consapevole che ci sono altri modi per farlo, ma sono interessato a sapere se ciò è possibile con l'uso di un'espressione regolare.Espressione regolare - corrisponde a tutte le parole ma corrisponde a parole univoche solo una volta
Per esempio Al momento ho la seguente espressione:
(\w+\b)(?!.*\1)
e la seguente stringa:
glass shoes door window door glasses. window glasses
Per la maggior parte l'espressione funziona e soddisfa le seguenti parole:
shoes
door
window
glasses
Ci sono due problemi con questo:
Un match per una sottostringa viene eseguito su "occhiali" con "vetro", non è corretto.
"occhiali" e "occhiali". dovrebbe corrispondere ma attualmente non lo fanno.
La finale dovrebbe essere:
shoes
door
window
glasses
glass
mi chiedo perché '\ 1' a quanto pare non corrisponde al' \ b' dal primo gruppo. Non dovresti '\ 1' abbinare tutto all'interno del gruppo e non solo' \ w + '? – pemistahl
@ maček Wow! Grazie mille, ho praticamente passato due giorni di fila cercando di capirlo! – Isomorph
@PeterStahl Il motivo per cui è necessario aggiungere '\ b' è assicurarsi che il lookahead negativo corrisponda a una parola intera e non solo una sottostringa, per impostazione predefinita corrisponde alle sottostringhe. – Isomorph