Expresión regular para dividir en sílabas

Cada lengua tiene su propia estructura silábica generalmente dividida en ataque, núcleo vocálico y coda. El núcleo vocálico suele ser el elemento imprescindible como ocurre en español que puede prescindir del ataque y coda consonánticos. Las condiciones de la estructura silábica del español son (donde C es consonante y V vocal):

FUENTE: Wikipedia

Podemos codificar en lenguaje formal la sucesión de letras que acepta la sílaba del español a través de la siguiente expresión regular:

También puede consultar el proceso inverso, la generación de palabras que siguen la fonotaxis del español.

PRUEBE la expresión regular para mayúsculas y minúsculas

Esta es la notación que necesitaremos:

[ … ] cualquier carácter especificado (no admite símbolos de más de un carácter)
(?: … ) agrupa varias operaciones pero no captura el grupo
(?= … ) con la condición de que siga … (no consume la subexpresión)
(?! … ) con la condición de que NO siga … (no consume la subexpresión)
| y/o (disyunción)
? Lo expresado previamente puede aparecer una vez o ninguna
+ Lo expresado previamente puede aparecer una o más veces
* Lo expresado previamente puede aparecer ninguna, una o más veces
\s espacio
$ fin del texto

Explicación de la expresión regular

La explicación se facilita considerando sólo el procesamiento de minúsculas


(?: GRUPO A: ataque silábico
ch|ll|rr|qu Asumiendo que el orden determina la preferencia de captura, primero capturamos los dígrafos en español los cuales nos obligarán a hacer muchas consideraciones particulares en lo sucesivo
|[mnñvzsyjhxw] “el ataque silábico puede estar formado por una única consonante”
|[fpbtdkgc][lr]? “el ataque silábico antes de la vocal puede llegar a ser complejo (/f/ u oclusiva + líquida)”
|[lr] Consideramos aparte estas dos consonantes para enfatizar que requieren un tratamiento especial por participar en dígrafos y como segunda consonante del ataque
)? FIN GRUPO A. '?’ porque el ataque silábico es opcional
(?: GRUPO B: núcleo silábico
[iuü][eaoéáó][iyu] triptongos de vocal cerrada+abierta+cerrada. Las cerradas han de ser átonas, no se admiten [íú]
|[aá]h?[uú][aá] o un triptongo que proviene de palabras de origen amerindio (ej. náhuatl)
|[iuü]h?[eaoéáó]|[eaoéáó]h?[iyu] o un diptongo de vocal cerrada+abierta o a la inversa. De nuevo las cerradas han de ser átonas. Admite una ‘h’ intercalada que en nada interrumpe el diptongo
|[ií]h?[uú]|[uúü]h?[iíy] o un diptongo de vocal cerrada+cerrada. Las vocales han de ser diferentes para ser un diptongo, de lo contrario sería un hiato. Es indiferente que sean tónicas o átonas
|[ieaouíéáóúü] o cualquier vocal aislada
) FIN GRUPO B. no aparece '?’ porque el núcleo es obligatorio
(?: GRUPO C: coda que no esté a final de palabra
(?: Para abordar las codas tomaremos una consonante o el grupo ‘ns’ ‘rs’ (transportar, perspectiva) sólo si esta consonante no forma parte de un posible ataque silábico.
Adicionalmente, como los dígrafos no pueden ser coda, habrá que establecer condiciones particulares para rechazarlos
(?: OPCIÓN DE CODA 1
(?: posibles consonantes de la coda:
[nm] 'n’ o ‘m’ o
|r(?!r) 'r’ (siempre y cuando no se duplique, pues los dígrafos no pueden ser coda)
)
s? Admitimos una posible ‘s’: sólo la ‘s’ puede ser segunda consonante de una coda en español
(?![ieaouíéáóúü]) siempre y cuando no suceda (?! …) una vocal, que indica el núcleo vocálico de otra sílaba
(ej. TRANS-POR-TAR vs. TRAN-SAC-CIÓN: en este último caso la ‘s’ está seguida de vocal y es más natural incorporarla al ataque de la siguiente sílaba)
)
|(?: OPCIÓN DE CODA 2
(?: posibles consonantes de la coda:
[mnñvzsyjhxw] cualquiera de estas consonantes o
|l(?!l) 'l’ (siempre y cuando no se duplique, pues los dígrafos no pueden ser coda)
)
(?![ieaouíéáóúü]) siempre y cuando no suceda (?! …) una vocal, que indica el núcleo vocálico de otra sílaba
(ej. SI-LO, SIL-BO: en este último caso la ‘l’ no está sucedida por vocal sino por ‘b’, luego puede ser coda)
)
|(?: OPCIÓN DE CODA 3
(?: posibles consonantes de la coda:
[fpbtdkg] cualquiera de estas consonantes o
|c(?!h) 'c’ (siempre y cuando no esté seguida por ‘h’ produciendo el dígrafo ‘ch’: los dígrafos no pueden ser coda)
)
(?! siempre y cuando no suceda (?! …)
[lr]? Una posible segunda consonante de un ataque para aquellas consonantes: [fpbtdkg]
[ieaouíéáóúü] una vocal, que indica el núcleo vocálico de otra sílaba
(ej. SO-LO, SO-PLO: en este último caso se reconoce la ‘p’ como formando parte de un nuevo ataque consonántico ‘pl’ más un núcleo vocálico ‘o’ por lo que ‘p’ no puede ser coda)
)
)
)
(?!\s|$) establecemos la condición de que no sea final de palabra: que no esté seguido por un espacio ni sea el fin del texto
)? FIN GRUPO C. '?’ porque la coda es opcional
(?: GRUPO D: coda a final de palabra
[ndrlsx] las palabras del español (se excluyen préstamos por tanto) sólo pueden acabar en estas consonantes
(?=\s|$) establecemos la condición de que sea final de palabra: que esté seguido por un espacio o sea el fin del texto
)? FIN GRUPO D. '?’ porque la coda es opcional