title: Regular expression for detect and delete duplicated paragraph/s
body: <p>I'm running an people's platform where humans improve/validate transcriptions of one minute audio records.</p>
  
  <p>Some users copy &amp; paste the transcription one or more times into the text area and then sends to us. It's a kind of spam.</p>
  
  <p>I'm working in a regex that allows me to detect and delete the duplicated text. Here is I have for now:</p>
  
  <p>The regex works in 2/4 cases. </p>
  
  <p>This is:</p>
  
  <pre><code>preg_replace("#(^.*$)((?:.+^\1$)+)#ms", "$1", $Transcription)
  </code></pre>
  
  <p>This are the cases:</p>
  
  <p><strong>Case 1: the original transcription plus only 1 repetition</strong></p>
  
  <pre><code>//Transcription with only 1 repetition
  $Transcription = "[00:00:02] Hola, buenos días.
  [00:00:03] Hola buenos días ¿Leo?
  [00:00:07] Sí, sí, yo soy.
  [00:00:07] Encantada de... De saludarle Leo. Mi nombre es y le llamo de. El motivo de mi llamada, Leo, es porque tenemos a nuestro técnicos especialistas en seguridad en su zona, ya que estamos actualizando la seguridad, porque hemos recibido pues varias solicitudes y llamadas de información por parte de vecinos, y simplemente era saber cuándo tendría diez minutitos para poder recibir usted la información ¿Cuándo le vendría mejor, Leo, está tarde o mañana?
  [00:00:34] Er... Er... Por la tarde si quiere.
  [00:00:37] Por la tarde, vale ¿Y cuál es el mejor horario...? ¿Las cinco, las seis?
  [00:00:43] No, espera, es una tienda.
  [00:00:46] Es una tienda, vale, entonces, un poquito por ser... ¿Cuánto me-. ¿Cuándo tiene menos trabajo normalmente a primera hora a las cinco, a las siete y media o a las ocho...?
  [00:00:53] [SUPERPUESTO 00:00:53].
  [00:00:53] A las cinco... A las cinco.
  [00:00:56] ¿A las cinco? Vale, pues dime la dirección de la tienda Leo.
  [00:01:00] Er... ¿Qué co-...? ¿Qué nombre es la compañía?
  [00:01:03] Er... Somos Secu-
  [00:00:02] Hola, buenos días.
  [00:00:03] Hola buenos días ¿Leo?
  [00:00:07] Sí, sí, yo soy.
  [00:00:07] Encantada de... De saludarle Leo. Mi nombre es y le llamo de. El motivo de mi llamada, Leo, es porque tenemos a nuestro técnicos especialistas en seguridad en su zona, ya que estamos actualizando la seguridad, porque hemos recibido pues varias solicitudes y llamadas de información por parte de vecinos, y simplemente era saber cuándo tendría diez minutitos para poder recibir usted la información ¿Cuándo le vendría mejor, Leo, está tarde o mañana?
  [00:00:34] Er... Er... Por la tarde si quiere.
  [00:00:37] Por la tarde, vale ¿Y cuál es el mejor horario...? ¿Las cinco, las seis?
  [00:00:43] No, espera, es una tienda.
  [00:00:46] Es una tienda, vale, entonces, un poquito por ser... ¿Cuánto me-. ¿Cuándo tiene menos trabajo normalmente a primera hora a las cinco, a las siete y media o a las ocho...?
  [00:00:53] [SUPERPUESTO 00:00:53].
  [00:00:53] A las cinco... A las cinco.
  [00:00:56] ¿A las cinco? Vale, pues dime la dirección de la tienda Leo.
  [00:01:00] Er... ¿Qué co-...? ¿Qué nombre es la compañía?
  [00:01:03] Er... Somos Secu-";
  </code></pre>
  
  <p>The function works OK:</p>
  
  <pre><code>$Transcription = preg_replace("#(^.*$)((?:.+^\1$)+)#ms", "$1", $Transcription);
  </code></pre>
  
  <p>The result:</p>
  
  <pre><code>print $Transcription;
  </code></pre>
  
  <p>See it here:
  <a href="https://regex101.com/r/yibyuT/5" rel="nofollow noreferrer">https://regex101.com/r/yibyuT/5</a></p>
  
  <p><strong>Case 2: The original transcription plus 2 repetitions</strong></p>
  
  <pre><code>//Transcription with 2 repetitions
  $Transcription = "[00:00:02] Hola, buenos días.
  [00:00:03] Hola buenos días ¿Leo?
  [00:00:07] Sí, sí, yo soy.
  [00:00:07] Encantada de... De saludarle Leo. Mi nombre es y le llamo de. El motivo de mi llamada, Leo, es porque tenemos a nuestro técnicos especialistas en seguridad en su zona, ya que estamos actualizando la seguridad, porque hemos recibido pues varias solicitudes y llamadas de información por parte de vecinos, y simplemente era saber cuándo tendría diez minutitos para poder recibir usted la información ¿Cuándo le vendría mejor, Leo, está tarde o mañana?
  [00:00:34] Er... Er... Por la tarde si quiere.
  [00:00:37] Por la tarde, vale ¿Y cuál es el mejor horario...? ¿Las cinco, las seis?
  [00:00:43] No, espera, es una tienda.
  [00:00:46] Es una tienda, vale, entonces, un poquito por ser... ¿Cuánto me-. ¿Cuándo tiene menos trabajo normalmente a primera hora a las cinco, a las siete y media o a las ocho...?
  [00:00:53] [SUPERPUESTO 00:00:53].
  [00:00:53] A las cinco... A las cinco.
  [00:00:56] ¿A las cinco? Vale, pues dime la dirección de la tienda Leo.
  [00:01:00] Er... ¿Qué co-...? ¿Qué nombre es la compañía?
  [00:01:03] Er... Somos Secu-
  [00:00:02] Hola, buenos días.
  [00:00:03] Hola buenos días ¿Leo?
  [00:00:07] Sí, sí, yo soy.
  [00:00:07] Encantada de... De saludarle Leo. Mi nombre es y le llamo de. El motivo de mi llamada, Leo, es porque tenemos a nuestro técnicos especialistas en seguridad en su zona, ya que estamos actualizando la seguridad, porque hemos recibido pues varias solicitudes y llamadas de información por parte de vecinos, y simplemente era saber cuándo tendría diez minutitos para poder recibir usted la información ¿Cuándo le vendría mejor, Leo, está tarde o mañana?
  [00:00:34] Er... Er... Por la tarde si quiere.
  [00:00:37] Por la tarde, vale ¿Y cuál es el mejor horario...? ¿Las cinco, las seis?
  [00:00:43] No, espera, es una tienda.
  [00:00:46] Es una tienda, vale, entonces, un poquito por ser... ¿Cuánto me-. ¿Cuándo tiene menos trabajo normalmente a primera hora a las cinco, a las siete y media o a las ocho...?
  [00:00:53] [SUPERPUESTO 00:00:53].
  [00:00:53] A las cinco... A las cinco.
  [00:00:56] ¿A las cinco? Vale, pues dime la dirección de la tienda Leo.
  [00:01:00] Er... ¿Qué co-...? ¿Qué nombre es la compañía?
  [00:01:03] Er... Somos Secu-
  [00:00:02] Hola, buenos días.
  [00:00:03] Hola buenos días ¿Leo?
  [00:00:07] Sí, sí, yo soy.
  [00:00:07] Encantada de... De saludarle Leo. Mi nombre es y le llamo de. El motivo de mi llamada, Leo, es porque tenemos a nuestro técnicos especialistas en seguridad en su zona, ya que estamos actualizando la seguridad, porque hemos recibido pues varias solicitudes y llamadas de información por parte de vecinos, y simplemente era saber cuándo tendría diez minutitos para poder recibir usted la información ¿Cuándo le vendría mejor, Leo, está tarde o mañana?
  [00:00:34] Er... Er... Por la tarde si quiere.
  [00:00:37] Por la tarde, vale ¿Y cuál es el mejor horario...? ¿Las cinco, las seis?
  [00:00:43] No, espera, es una tienda.
  [00:00:46] Es una tienda, vale, entonces, un poquito por ser... ¿Cuánto me-. ¿Cuándo tiene menos trabajo normalmente a primera hora a las cinco, a las siete y media o a las ocho...?
  [00:00:53] [SUPERPUESTO 00:00:53].
  [00:00:53] A las cinco... A las cinco.
  [00:00:56] ¿A las cinco? Vale, pues dime la dirección de la tienda Leo.
  [00:01:00] Er... ¿Qué co-...? ¿Qué nombre es la compañía?
  [00:01:03] Er... Somos Secu-...",
  </code></pre>
  
  <p>The function applied:</p>
  
  <pre><code>$Transcription = preg_replace("#(^.*$)((?:.+^\1$)+)#ms", "$1", $Transcription);
  </code></pre>
  
  <p>The result it's OK:</p>
  
  <pre><code>print $Transcription;
  </code></pre>
  
  <p>See it here:
  <a href="https://regex101.com/r/yibyuT/6" rel="nofollow noreferrer">https://regex101.com/r/yibyuT/6</a></p>
  
  <p><strong>Case 3: The original transcription plus 3 repetitions</strong></p>
  
  <pre><code>//Transcription plus 3 repetitions
  $Transcription = "[00:00:02] Hola, buenos días.
  [00:00:03] Hola buenos días ¿Leo?
  [00:00:07] Sí, sí, yo soy.
  [00:00:07] Encantada de... De saludarle Leo. Mi nombre es y le llamo de. El motivo de mi llamada, Leo, es porque tenemos a nuestro técnicos especialistas en seguridad en su zona, ya que estamos actualizando la seguridad, porque hemos recibido pues varias solicitudes y llamadas de información por parte de vecinos, y simplemente era saber cuándo tendría diez minutitos para poder recibir usted la información ¿Cuándo le vendría mejor, Leo, está tarde o mañana?
  [00:00:34] Er... Er... Por la tarde si quiere.
  [00:00:37] Por la tarde, vale ¿Y cuál es el mejor horario...? ¿Las cinco, las seis?
  [00:00:43] No, espera, es una tienda.
  [00:00:46] Es una tienda, vale, entonces, un poquito por ser... ¿Cuánto me-. ¿Cuándo tiene menos trabajo normalmente a primera hora a las cinco, a las siete y media o a las ocho...?
  [00:00:53] [SUPERPUESTO 00:00:53].
  [00:00:53] A las cinco... A las cinco.
  [00:00:56] ¿A las cinco? Vale, pues dime la dirección de la tienda Leo.
  [00:01:00] Er... ¿Qué co-...? ¿Qué nombre es la compañía?
  [00:01:03] Er... Somos Secu-
  [00:00:02] Hola, buenos días.
  [00:00:03] Hola buenos días ¿Leo?
  [00:00:07] Sí, sí, yo soy.
  [00:00:07] Encantada de... De saludarle Leo. Mi nombre es y le llamo de. El motivo de mi llamada, Leo, es porque tenemos a nuestro técnicos especialistas en seguridad en su zona, ya que estamos actualizando la seguridad, porque hemos recibido pues varias solicitudes y llamadas de información por parte de vecinos, y simplemente era saber cuándo tendría diez minutitos para poder recibir usted la información ¿Cuándo le vendría mejor, Leo, está tarde o mañana?
  [00:00:34] Er... Er... Por la tarde si quiere.
  [00:00:37] Por la tarde, vale ¿Y cuál es el mejor horario...? ¿Las cinco, las seis?
  [00:00:43] No, espera, es una tienda.
  [00:00:46] Es una tienda, vale, entonces, un poquito por ser... ¿Cuánto me-. ¿Cuándo tiene menos trabajo normalmente a primera hora a las cinco, a las siete y media o a las ocho...?
  [00:00:53] [SUPERPUESTO 00:00:53].
  [00:00:53] A las cinco... A las cinco.
  [00:00:56] ¿A las cinco? Vale, pues dime la dirección de la tienda Leo.
  [00:01:00] Er... ¿Qué co-...? ¿Qué nombre es la compañía?
  [00:01:03] Er... Somos Secu-
  [00:00:02] Hola, buenos días.
  [00:00:03] Hola buenos días ¿Leo?
  [00:00:07] Sí, sí, yo soy.
  [00:00:07] Encantada de... De saludarle Leo. Mi nombre es y le llamo de. El motivo de mi llamada, Leo, es porque tenemos a nuestro técnicos especialistas en seguridad en su zona, ya que estamos actualizando la seguridad, porque hemos recibido pues varias solicitudes y llamadas de información por parte de vecinos, y simplemente era saber cuándo tendría diez minutitos para poder recibir usted la información ¿Cuándo le vendría mejor, Leo, está tarde o mañana?
  [00:00:34] Er... Er... Por la tarde si quiere.
  [00:00:37] Por la tarde, vale ¿Y cuál es el mejor horario...? ¿Las cinco, las seis?
  [00:00:43] No, espera, es una tienda.
  [00:00:46] Es una tienda, vale, entonces, un poquito por ser... ¿Cuánto me-. ¿Cuándo tiene menos trabajo normalmente a primera hora a las cinco, a las siete y media o a las ocho...?
  [00:00:53] [SUPERPUESTO 00:00:53].
  [00:00:53] A las cinco... A las cinco.
  [00:00:56] ¿A las cinco? Vale, pues dime la dirección de la tienda Leo.
  [00:01:00] Er... ¿Qué co-...? ¿Qué nombre es la compañía?
  [00:01:03] Er... Somos Secu-
  [00:00:02] Hola, buenos días.
  [00:00:03] Hola buenos días ¿Leo?
  [00:00:07] Sí, sí, yo soy.
  [00:00:07] Encantada de... De saludarle Leo. Mi nombre es y le llamo de. El motivo de mi llamada, Leo, es porque tenemos a nuestro técnicos especialistas en seguridad en su zona, ya que estamos actualizando la seguridad, porque hemos recibido pues varias solicitudes y llamadas de información por parte de vecinos, y simplemente era saber cuándo tendría diez minutitos para poder recibir usted la información ¿Cuándo le vendría mejor, Leo, está tarde o mañana?
  [00:00:34] Er... Er... Por la tarde si quiere.
  [00:00:37] Por la tarde, vale ¿Y cuál es el mejor horario...? ¿Las cinco, las seis?
  [00:00:43] No, espera, es una tienda.
  [00:00:46] Es una tienda, vale, entonces, un poquito por ser... ¿Cuánto me-. ¿Cuándo tiene menos trabajo normalmente a primera hora a las cinco, a las siete y media o a las ocho...?
  [00:00:53] [SUPERPUESTO 00:00:53].
  [00:00:53] A las cinco... A las cinco.
  [00:00:56] ¿A las cinco? Vale, pues dime la dirección de la tienda Leo.
  [00:01:00] Er... ¿Qué co-...? ¿Qué nombre es la compañía?
  [00:01:03] Er... Somos Secu-",
  </code></pre>
  
  <p>The function applied:</p>
  
  <pre><code>$Transcription = preg_replace("#(^.*$)((?:.+^\1$)+)#ms", "$1", $Transcription);
  </code></pre>
  
  <p>The result shows the original transcription plus 1 repetition, so it's not OK:</p>
  
  <pre><code>print $Transcription;
  </code></pre>
  
  <p><strong>Case 4 The original transcription plus N iterations and some text between each and/or at the beginning and/or at the end</strong></p>
  
  <pre><code>//Original transcription with 1 repetition and some text here and there
  $Transcription = "some text here."./*Here start the original prhase*/."[00:00:02] Hola, buenos días.
  [00:00:03] Hola buenos días ¿Leo?
  [00:00:07] Sí, sí, yo soy.
  [00:00:07] Encantada de... De saludarle Leo. Mi nombre es y le llamo de. El motivo de mi llamada, Leo, es porque tenemos a nuestro técnicos especialistas en seguridad en su zona, ya que estamos actualizando la seguridad, porque hemos recibido pues varias solicitudes y llamadas de información por parte de vecinos, y simplemente era saber cuándo tendría diez minutitos para poder recibir usted la información ¿Cuándo le vendría mejor, Leo, está tarde o mañana?
  [00:00:34] Er... Er... Por la tarde si quiere.
  [00:00:37] Por la tarde, vale ¿Y cuál es el mejor horario...? ¿Las cinco, las seis?
  [00:00:43] No, espera, es una tienda.
  [00:00:46] Es una tienda, vale, entonces, un poquito por ser... ¿Cuánto me-. ¿Cuándo tiene menos trabajo normalmente a primera hora a las cinco, a las siete y media o a las ocho...?
  [00:00:53] [SUPERPUESTO 00:00:53].
  [00:00:53] A las cinco... A las cinco.
  [00:00:56] ¿A las cinco? Vale, pues dime la dirección de la tienda Leo.
  [00:01:00] Er... ¿Qué co-...? ¿Qué nombre es la compañía?
  [00:01:03] Er... Somos Secu-"./*Here ends the original phrase*/."."./*Yes, a dot. Only a dot as 'some text between the repetitions'*/.""./*Here start the first repetition. Please note the vertical white space at the beginning*/.
  [00:00:02] Hola, buenos días.
  [00:00:03] Hola buenos días ¿Leo?
  [00:00:07] Sí, sí, yo soy.
  [00:00:07] Encantada de... De saludarle Leo. Mi nombre es y le llamo de. El motivo de mi llamada, Leo, es porque tenemos a nuestro técnicos especialistas en seguridad en su zona, ya que estamos actualizando la seguridad, porque hemos recibido pues varias solicitudes y llamadas de información por parte de vecinos, y simplemente era saber cuándo tendría diez minutitos para poder recibir usted la información ¿Cuándo le vendría mejor, Leo, está tarde o mañana?
  [00:00:34] Er... Er... Por la tarde si quiere.
  [00:00:37] Por la tarde, vale ¿Y cuál es el mejor horario...? ¿Las cinco, las seis?
  [00:00:43] No, espera, es una tienda.
  [00:00:46] Es una tienda, vale, entonces, un poquito por ser... ¿Cuánto me-. ¿Cuándo tiene menos trabajo normalmente a primera hora a las cinco, a las siete y media o a las ocho...?
  [00:00:53] [SUPERPUESTO 00:00:53].
  [00:00:53] A las cinco... A las cinco.
  [00:00:56] ¿A las cinco? Vale, pues dime la dirección de la tienda Leo.
  [00:01:00] Er... ¿Qué co-...? ¿Qué nombre es la compañía?
  [00:01:03] Er... Somos Secu-/*Here ends the first repetition.*/
  fddjkdfjk djk fdjkf djk fdjk fjkdfj kdjfkdj fjdkf jdjf d
  
  
  /*some text at the end. Please note the several vertical white space at the end*/";
  </code></pre>
  
  <p>The function applied:</p>
  
  <pre><code>$Transcription = preg_replace("#(^.*$)((?:.+^\1$)+)#ms", "$1", $Transcription);
  </code></pre>
  
  <p>The result shows the original transcription plus some not-repated text here and there,so it's not OK too:</p>
  
  <pre><code>print $Transcription;
  </code></pre>
  
  <p>I need only one function for all cases (only one repetition or two or more repetitions) including the possibility of non-repetited words or phrases into $Transcription wich not will be detected nor deleted.</p>