Questa espressione (ispirato da Mike, sopra) sembra catturare tutti i duplicati, triplicati, ecc, compresi quelli alla fine della stringa, che la maggior parte degli altri non lo fanno:
/(^|\s+)(\S+)(($|\s+)\2)+/g, "$1$2")
I conoscere la domanda posta in modo che corrisponda duplica solo, ma un triplice copia si trova a soli 2 duplicati accanto all'altro :)
In primo luogo, ho messo (^|\s+)
per assicurarsi che comincia con una parola piena, altrimenti "bistecca del bambino" sarebbe andato a "child'steak" (le "s" corrispondono). Quindi, corrisponde a tutte le parole complete ((\b\S+\b)
), seguito da una fine di stringa ($
) o da un numero di spazi (\s+
), il tutto ripetuto più volte.
ho provato come questo e ha funzionato bene:
var s = "here here here here is ahi-ahi ahi-ahi ahi-ahi joe's joe's joe's joe's joe's the result result result";
print(s.replace(/(\b\S+\b)(($|\s+)\1)+/g, "$1"))
--> here is ahi-ahi joe's the result
No, questo non è compito. Mi vergogno dell'umanità per il fatto che alcune persone usano StackOverflow per fare i compiti per loro. – Joshua
@poly: Quella non era una "accusa", ma una domanda calma e normale che perfettamente può prendere un "no" come risposta. @Joshua: Sì, alcune persone (non troppo poche) lasciano che questo sito faccia i compiti per loro. Ma fare domande a casa non è una brutta cosa da fare su SO, quando sono taggati come tali. Di solito lo stile delle risposte cambia da "ecco la soluzione" a "ecco alcune cose a cui non hai pensato", e questa è una buona cosa. Qualcuno deve cercare di mantenere la distinzione, nel suo caso sono stato io, e altrove "altre persone" fanno la stessa cosa. È tutto. – Tomalak
Spero di non vedere mai una domanda del tipo "Sembra una domanda sul posto di lavoro." e poi la gente sosterrà se lo straripamento dello stack sta facendo il lavoro di qualcuno. – marcio