Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 2 de 2
Ir a la página Anterior  1, 2
 
[SOLUCIONADO... Casi] RegExp Y Los «flags»
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Re: RegExp Y Los «flags» 
 
Hola, Shordi:

¡AVISO!, ¡TOCHO!, ¡ALARMA!, ¡TOCHO!, ¡A CUBIERTO!, ¡TOCHO!

Pues efectivamente son medidas poco intuitivas, pero son las necesarias para quien escribe actualmente, sea o no ficción, sean libros o blogs. Los «tipos» —término más correcto que «matrices» que en realidad es el molde para hacer tipos, pero que está mucho más extendido— son los «plomos» que los antiguos impresores tenían que emplear para componer un texto —por eso no incluye saltos de línea, entre otros; tampoco espacios ni tabulaciones, no sé por qué— y ha quedado como unidad universal de medida, tanto en concursos como para pago de servicios de traducción, corrección, etc., p.e., 25€/1.000 matrices. Lo mismo ocurre con «palabras», con el detalle de que se deben detectar correctamente las palabras incluso con faltas de ortografía leves; esto es porque en un concurso pasarte de palabras es eliminación inmediata y no poner espacio tras una coma sólo baja la puntuación. Lo mismo ocurre con presupuestos de corrección: habrá faltas leves a corregir, pero no puedes equivocarte por no contar el 10% de las palabras porque será un 10% menos que ganas. Por supuesto, tanto tipos como palabras son unidades que se utilizan también para medir entradas de blog, artículos en publicaciones digitales y demás parafernalia profesional internetiana. Al fin, son los «quilos» de la escritura.
«Letras», «sílabas» y «frases» se emplean para la estimación de «legibilidad». No de la intelegibilidad, es decir, no de lo fácilmente que se pueda entender un texto, sino de lo rápido que se pueda leer. Este tal Szigriszt, en su tesis de 1993, establece fórmulas para el español, francés e inglés, y el valor, junto con una escala algo distinta de la original, es la que emplean amázon y gúguel, por ejemplo, para calificar las entradas, o las revistas para aceptar artículos. Szigriszt, con buen criterio, en lugar de legibilidad lo llama «perspicuidad» —vale que el término es feo, pero es el adecuado—.
Con letras se refiere a caracteres legibles, es decir, los del alfabeto, incluyendo acentos, diéresis, virguillas, cedillas, etc. pero no signos de puntuación. La contabilidad de sílabas es complicada y, salvo el caso de la poesía, se puede hacer una aproximación bastante buena por el método propuesto sin llegar a la silabación —que es la leche... pero algún día, algún día...—. Para la contabilidad de frases, empleo el criterio que Szigriszt propone en su tesis, aunque también es aproximado; yo incluiría puntos y comas, pero...
En fin, esta es la explicación - rollo de por qué mido esas cosas y no otras y por qué empleo o quiero emplear RegExp y no algoritmos particulares —inmediatez en respuesta, esto es, obtener todos los parámetros mientras se va escribiendo—.
Espero que este rollo sirva de ayuda.


Palabras        : 460
Matrices        : 2793
Caracteres      : 2346
Letras          : 2202
Párrafos        : 7
Sílabas —prov.— : 916
Frases —prov.—  : 28
LEGIBILIDAD
Fdez-Huerta 1959: 71
Gtz-Polini 1972 : 43
Szigriszt 1993  : 66

 



 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: RegExp Y Los «flags» 
 
orig2a19
 



 
última edición por Grandamakulo el Jueves, 12 Septiembre 2019, 08:52; editado 1 vez 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: RegExp Y Los «flags» 
 
Pos me rindo. Bizco me quedao.

bizco
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: RegExp Y Los «flags» 
 
Jajaja, lo siento, de verdad.

Resumiendo, un escritor necesita:

Matrices o tipos: con mucha precisión o exacto.
Palabras: con mucha precisión o exacto.
Perspicuidad: aproximación buena. Para lo que hay que medir:
Frases: aproximado.
Sílabas: aproximado.
Letras: aproximado.
 



 
última edición por Grandamakulo el Jueves, 12 Septiembre 2019, 09:33; editado 1 vez 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: RegExp Y Los «flags» 
 
Grandamakulo escribió: [Ver mensaje]
Jajaja, lo siento, de verdad.

Resumiendo, un escritor necesita:

Matrices o tipos: con mucha precisión o exacto.
Palabras: con mucha precisión o exacto.
Perspicuidad: aproximación buena. Para lo que hay que medir:
Frases: aproximado.
Sílabas: aproximado.
Letras: aproximado.


... y algo que decir
       
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: RegExp Y Los «flags» 
 
shordi escribió: [Ver mensaje]

... y algo que decir
       


Bueno, bueno, tampoco nos pongamos exquisitos. Ahí tienes el Marca o a Belén Esteban...

Insisto lo que en un comentario anterior decía respecto al componente RegExp: uso de PCRE, que limita el uso a ASCII extendido y no UTF-8, y la ausencia de la banderita globalmatch, «g».

En fin, aquí os dejo una función que funciona con PRCE... y sus limitaciones. Además pongo una comparativa de resultados con textos más o menos normalitos, dando por cierto que JS da valores exactos, dentro de lo posible, claro.
Public Function ContarPalabras(Texto As String) As Integer[]
  ' **** Estadísiticas de un texto.
  ' <<<< Devuelve una matriz de enteros:
  '       [0]: Número de palabras
  '       [1]: Número de tipos
  '       [2]: Número de caracteres
  '       [3]: Perspicuidad de Szgrizt 1993
  ' >>>> Texto plano para obtener estadísticas.
  '
  '' ╔═════════════════════════════════════════════════════════════╗
  '' ║ Atención: PCRE sólo admite texto ASCII extendido, no UTF-8. ║
  '' ║            Los valores obtenidos son aproximados.           ║
  '' ╚═════════════════════════════════════════════════════════════╝

  ' SCAM: Constante «campanita» = CHR(7)
  Dim iPaso As New Integer[4]     ' Variable de paso para almacenar resultados
  Dim sEse As String              ' Cadena de trabajo
  Dim iPal As Integer             ' Nº Palabras para cálculo perspicuidad
  Dim iSil As Integer             ' Nº Sílabas   "    "
  Dim iLet As Integer             ' Nº Letras    "    "
  Dim iFrs As Integer             ' Nº Frases    "    "
  Dim SCAM As String = Chr(7)
  
  ' Si no hay texto, no hay resultados
  If Not Texto Then Return [0, 0, 0, 0]
  
  ' Palabras
  sEse = RegExp.Replace(Texto, "([A-Za-zÁÉÍÓÚáéíóúÜüñÑ0-9])[A-Za-zÁÉÍÓÚáéíóúÜüñÑ0-9]*", SCAM, RegExp.Greedy)
  iPal = Split(sEse, SCAM).Max
  iPaso[0] = iPal
  
  ' Tipos
  sEse = RegExp.Replace(Texto, ".", SCAM, RegExp.Greedy)
  iPaso[1] = Split(sEse, SCAM).Max
  
  ' Caracteres
  sEse = RegExp.Replace(Texto, "\\S", SCAM, RegExp.Greedy)
  iPaso[2] = Split(sEse, SCAM).Max
  
  ' Sílabas
  sEse = RegExp.Replace(Texto, "[aeo]h[iu]|[iu]h[aeo]|[aeo][iu]|[aeo][y]|[y]|[íú]|[iu][^aeo]|[aeo]|[áéíóú]|[q|g]ui[aeo]", SCAM, RegExp.Greedy + RegExp.Caseless)
  iSil = Split(sEse, SCAM).Max
  
  ' Letras
  sEse = RegExp.Replace(Texto, "[A-Za-zÁÉÍÓÚáéíóúÜüñÑ0-9]", SCAM, RegExp.Greedy)
  iLet = Split(sEse, SCAM).Max
  
  ' Frases
  sEse = RegExp.Replace(Texto, "[.?!][^.?!]", SCAM, RegExp.Greedy)
  iFrs = Split(sEse, SCAM).Max
  
  ' Perspicuidad
  If iPal > 0 And iFrs > 0 Then
      iPaso[3] = 206.835 - 62.3 * iSil / iPal - iPal / iFrs
    Else
      iPaso[3] = 0
  Endif
  
  Return iPaso

End


╔══════════════╦════════════╦══════════╦═══════════════╦═══════════════════╗
║              ║  Patrón 1  ║ Patrón 2 ║    Patrón 3   ║      Patrón 4     ║
╠══════════════╬══════╦═════╬═════╦════╬═══════╦═══════╬═════════╦═════════╣
║              ║ PCRE ║  JS ║ PCR ║ JS ║  PCR  ║   JS  ║   PCR   ║    JS   ║
╠══════════════╬══════╬═════╬═════╬════╬═══════╬═══════╬═════════╬═════════╣
║ Palabras     ║   52 ║  52 ║  51 ║ 50 ║ 1.882 ║ 1.882 ║ 381.235 ║ 381.231 ║
╠══════════════╬══════╬═════╬═════╬════╬═══════╬═══════╬═════════╬═════════╣
║ Sílabas      ║  115 ║ 111 ║ 110 ║ 96 ║ 3.814 ║ 3.568 ║ 747.811 ║ 705.946 ║
╠══════════════╬══════╬═════╬═════╬════╬═══════╬═══════╬═════════╬═════════╣
║ Frases       ║    8 ║   8 ║   9 ║  9 ║    30 ║    30 ║   9.720 ║   9.720 ║
╠══════════════╬══════╬═════╬═════╬════╬═══════╬═══════╬═════════╬═════════╣
║ Perspicuidad ║   63 ║  67 ║  67 ║ 82 ║    18 ║    26 ║      45 ║      52 ║
╚══════════════╩══════╩═════╩═════╩════╩═══════╩═══════╩═════════╩═════════╝


PS.—Para comparaciones y ara aprender ausar RegExp he empleado:
https://regexr.com/
Totalmente recomendable.
 



 
última edición por Grandamakulo el Viernes, 13 Septiembre 2019, 16:04; editado 3 veces 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: RegExp Y Los «flags» 
 
muy buena info tendré que aprender a usar este componente, promete mucho.
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: RegExp Y Los «flags» 
 
Buena aproximación. Una pena lo de UTF. De todas formas supongo que pasando el texto a un fichero e invocando el viejo y querido iconv, se podrán obtener resultados aproximados.

Ya te contaré cuando llegue a implementarlo. (De momento estoy reescribiendo desde 0 el viejo Soprano y aún voy por el diseño del interfaz, que el viejo me parecía... eso, viejo).
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Gambas3.4(Casi).Ventana De Ayuda Y Ayuda O... Shell Instalación 3 Martes, 22 Enero 2013, 00:23 Ver último mensaje
Shell
No hay nuevos mensajes Programa Desarrollado En Gambas 3.1 Termin... jousseph Aplicaciones/Fragmentos de Código 8 Lunes, 30 Noviembre 2015, 10:07 Ver último mensaje
jousseph
No hay nuevos mensajes Casi Salgo Loco Con Esta Tontería (grupos... shordi General 4 Domingo, 13 Diciembre 2015, 12:27 Ver último mensaje
shordi
No hay nuevos mensajes Problema Con RegExp shordi General 6 Lunes, 01 May 2017, 10:50 Ver último mensaje
shordi
 

Publicar nuevo tema  Responder al tema  Página 2 de 2
Ir a la página Anterior  1, 2

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron