Regex: abreviaturas coincidentes de una palabra

Estaba pensando en proporcionar la siguiente expresión regular como respuesta a esta pregunta , pero parece que no puedo escribir la expresión regular que estaba buscando:

w?o?r?d?p?r?e?s?s? 

Esto debe coincidir con una abreviatura ordenada de la palabra wordpress , pero tampoco puede coincidir con nada.

¿Cómo puedo modificar la expresión regular anterior para que coincida con al menos 4 caracteres en orden ? Me gusta:

  • palabra
  • wrdp
  • prensa
  • wordp
  • wpress
  • wordpress

Me gustaría saber cuál es la mejor manera de hacer esto … =)

Podría usar una afirmación de anticipación:

 ^(?=.{4})w?o?r?d?p?r?e?s?s?$ 

¿Qué pasa con las funciones del verificador de similitud php?

  • levenshtein
  • texto similar
 if ( strlen($string) >= 4 && preg_match('#^w?o?r?d?p?r?e?s?s?$#', $string) ) { // abbreviation ok } 

Esto ni siquiera ejecutará la expresión regular a menos que la cadena tenga al menos 4 caracteres de longitud.

Sé que esto no es una expresión regular, solo por diversión …

 #!/usr/bin/python FULLWORD = "wordprocess" def check_word(word): i, j = 0, 0 while i < len(word) and j < len(FULLWORD): if word[i] == FULLWORD[j]: i += 1; j += 1 else: j += 1 if j >= len(FULLWORD) or i < 4 or i >= len(FULLWORD): return "%s: FAIL" % word return "%s: SUCC" % word print check_word("wd") print check_word("wdps") print check_word("wsdp") print check_word("wordprocessr")