Autor
|
Tema: Matches para palabras o silabas (Leído 3,280 veces)
|
SrTrp
Desconectado
Mensajes: 328
Script/C#
|
Bueno quiero usar matches para saber cuando hay silabas o palabras en una cadena String condicion = ".*[si]+[so].*"; Pattern pattern = Pattern.compile(condicion); Matcher matcher = pattern.matcher(cadena); System. out. println(matcher. matches());
pero no se como implementart las expresiones para por ejemplo una cadena siso me devuelva true pero si es una cadena sis me devuelva false
|
|
|
En línea
|
|
|
|
rub'n
Desconectado
Mensajes: 1.217
(e -> λ("live now")); tatuar -> λ("α");
|
pero no se como implementart las expresiones para por ejemplo una cadena siso me devuelva true pero si es una cadena sis me devuelva false
Esa parte que siso te de true y sis false? quieres decir? Hay tienes para empezar la clase Pattern en su docu ayuda mas private void silabas() { final String silabas = "aeiouy"; final Pattern pattern = Pattern.compile("[aeiyou]+"); final Matcher matcher = pattern.matcher(silabas); System. out. println(matcher. matches()); } private void palabras() { final Pattern pattern = Pattern.compile("[a-zA-Z]+");// falta quitar espacios puntos y comas, con replaceAll("^[.,\\s]+"), voy a dormir XD final Matcher matcher = pattern.matcher(sis); System. out. println(matcher. matches()); // true con ambos String }
|
|
« Última modificación: 10 Febrero 2019, 03:11 am por rub'n »
|
En línea
|
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen king
|
|
|
SrTrp
Desconectado
Mensajes: 328
Script/C#
|
lo que me refiero con siso que detecta que tiene silabas correctas y que debe dar true por ejemplo si ingreso estas cadenas debe dar true "siso" "como si", y debe dar false por ejemplo "sis", "metete al sistema"..
|
|
|
En línea
|
|
|
|
rub'n
Desconectado
Mensajes: 1.217
(e -> λ("live now")); tatuar -> λ("α");
|
lo que me refiero con siso que detecta que tiene silabas correctas y que debe dar true por ejemplo si ingreso estas cadenas debe dar true "siso" "como si", y debe dar false por ejemplo "sis", "metete al sistema"..
Entonces según entiendo, si la palabra tiene, o contiene sis, dar false(la i es una silaba también XD, mala descripción tuya, o sea, tu no te estas refiriendo si tiene varias silabas, o una silaba), ahí va, sino tocara reimplementar tu descripciónprivate void negarSis() { final String palabra = "siso"; // debe dar true final String palabra2 = "como si"; // debe dar true final String meteteAlsistema = "metete al SIStema"; // solo "sis" false final Pattern pattern = Pattern.compile("^(?i)(?!.*?sis).*");//flag ignore case (?i) metete al SIStema, o metete al sistema, resultado false final Matcher matcher = pattern.matcher(meteteAlsistema); System. out. println(matcher. matches()); }
|
|
« Última modificación: 10 Febrero 2019, 12:39 pm por rub'n »
|
En línea
|
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen king
|
|
|
SrTrp
Desconectado
Mensajes: 328
Script/C#
|
Deja me explico mejor xd por ejemplo la silabas de s serían (sa,se,si,so,su) por lo tanto palabras como "suma,sistema y todo eso entra" y perdón no me explique bien quiero detectar silabas con matches y si esta algo bien como me explicaste pero quiero saber mas de 1 caso de silabas quiero que verifique que una cadena tenga alguna silaba la que sea y cierto sistemas entra en true, lo único que se me ocurre es crear 5 matches con cada una de las silabas y si alguna me devuelve true es que hay, pero quiero hacerlo solo en un matcher como sería la expresión?
|
|
|
En línea
|
|
|
|
SrTrp
Desconectado
Mensajes: 328
Script/C#
|
Pues creo ya lo supe la expresión algo así ".*sa.*|.*se.*|.*si.*|.*so.*|.*su.*"
|
|
|
En línea
|
|
|
|
Serapis
|
Es un error común confundir la gramática de un lenguaje de programación con la gramática humana.
En programación, las expresiones regulares reconocen 'patrones'. Para reconocer sílabas del lenguaje humano, deben crearse los patrones específicos... es decir no están descritas como tal, las sílabas de la gramática humana, tienen reglas, que definen donde termina una sílaba y empieza otra, que además es dependiente del idioma. En español, por ejemplo, tenemos los diptongos, hiatos y triptongos, que pueden complicarlo...
entonces la única forma de reconocer sílbas del español, será crear patrones para cada caso, bien que luego muchos se puedan aunar en uno mismo, con ligeras diferencias o a base de complicarlo... la sílaba más larga en español suelen ser de la forma: "trans".
Con la s, tienes sílabas sa, se si, so, su, pero que las reconozca bien o no, dependerá de la letra que luego venga detrás... así: en "Sor Socorro sospecha del soriano"Las silabas de 's' son: Sor - espacio So - corro sos - pecha so - riano.
Como puede ves 'sor' de Sor es una sola sílaba, pero luego en soriano las 3 mismas letras 's+o+r' participan de 2 sílabas.
Resumiendo, obtener las sílabas de plabras del lenguaje humano, es algo más complicado... requiere primero aprenderte bien la parte de la gramática española que lo trata (análisis léxicográfico), luego estarás más preparado para ser capaz de exponer patrones que capten las sílabas.
Una forma sucia es componer todas las situaciones posibles para 3 letras con la 's', descartando luego a mano las que no proceden y revisando luego las que tienen casos positivos y negaticos (como ese doble caso de sor y soriano), entonces para estos casos primero filtras encontrarlos todos y luego una segunda revisión que descarte todos los casos... Posiblemente esta sea la regla para todas las silabas comenzando con 's' (pero no si no es inicial, por ejemplo como en la 's' final de 'no-so-tros') tomar3 = "s" vocal consonante separador ejemplo: 'sal ', 'sol ', 'Toma-sín ' tomar3 = "s" vocal consonante consonante ejemplo: 'sas-tre', 'sím-bolo', 'sal-go', 'sís-tole' tomar2 = "s" vocal consonante vocal ejemplo 'sa-lida', 'so-corro', 'se-ta', 'sa-gaz' tomar2 = "s" vocal vocal ---> ejemplo 'Sá-ez', 'sa-eta', 'se-ísmo'
tomar2, tomar3 indica que son sílabas de 2 y 3 letras respectivamente. Pero hay que revisarlo en profundidad, para ver si hay algún caso irregular... y aclaro que solo sería sabiendo que la 's' es comienzo de sílaba, en una palabra como 'es-truendo', tras la 's' le sigue una consonante...
En fin, es tarea tuya, peor ahí tienes por donde cogerlo de un a forma sucia... es válido si sólo precisas hacerlo para la 's', si pretendes hacerlo con todo el alfabeto, entonces es mejor que te estudies a fondo la gramática española para recrear las reglas de formación de sílabas y poderlo portar para programarlo.
|
|
« Última modificación: 10 Febrero 2019, 23:47 pm por NEBIRE »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Seperar en silabas
Programación Visual Basic
|
<[(x)]>
|
3
|
8,225
|
8 Diciembre 2009, 06:45 am
por MCKSys Argentina
|
|
|
problema con busqueda de silabas ( letra mayuscula)
« 1 2 »
Programación C/C++
|
manutmac
|
10
|
6,166
|
14 Noviembre 2012, 16:09 pm
por rir3760
|
|
|
¿En ingles se puede separar las palabras en silabas?
Foro Libre
|
bacanzito
|
2
|
2,558
|
6 Agosto 2014, 11:40 am
por ivancea96
|
|
|
Regex.Matches() error de uso C#
.NET (C#, VB.NET, ASP)
|
Kaxperday
|
5
|
4,077
|
22 Febrero 2016, 00:05 am
por Eleкtro
|
|
|
MOVIDO: Division Silabas Texto
Programación General
|
Eleкtro
|
0
|
1,828
|
10 Febrero 2017, 17:11 pm
por Eleкtro
|
|