elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Sintaxis REGEXP para sustituir una palabra x otra
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Sintaxis REGEXP para sustituir una palabra x otra  (Leído 2,668 veces)
condotiero

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Sintaxis REGEXP para sustituir una palabra x otra
« en: 19 Marzo 2015, 11:01 am »

Buenos días.

Estoy trabajando con fuentes de noticias RSS en un programa de gestión de contenidos (digital signage). El programa permite parsear y filtrar los ítems y urls de varias maneras (también a través de expresiones regulares), pero soy neófito en el tema y no sé qué sintaxis debo poner para poder reemplazar una palabra x otra utilizando una expresión regular.

Muchas gracias por anticipado.


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Sintaxis REGEXP para sustituir una palabra x otra
« Respuesta #1 en: 19 Marzo 2015, 13:25 pm »

primero necesitas una función replace y su sisntaxis, ya que pueden trabajar de formas diferentes, pero normalmente los grupos de captura los retornan como $1, $2... así hasta el $9

Regex es un poco acido y complicado al inicio, pero eventualmente se vuelve super util...

necesitas saber las características de lo buscado y del resultado, si indicas eso puedo ayudarte


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.874



Ver Perfil
Re: Sintaxis REGEXP para sustituir una palabra x otra
« Respuesta #2 en: 19 Marzo 2015, 16:01 pm »

Te pongo un breve ejemplo:

Tienes esta cadena de texto:
Código:
Hola, Mundo!

Tienes esta expresión regular:
Código:
"(.+)(\,)(\s+)(.+)(\!)"

Cada pareja de paréntesis representa un grupo, cada grupo es una especie de delimitador de captura, y a la expresión debes añadirle otra pareja de paréntesis imaginaria de esta manera: "((.+)(\,)(\s+)(.+)(\!))" que representa el primer grupo de todos (es decir la captura completa), por ende:

Grupo 0: "Hola, Mundo!"
Grupo 1: "Hola"
Grupo 2: ","
Grupo 3: " "
Grupo 4: "Mundo"
Grupo 5: "!"

Conociendo lo que hemos capturado, los grupos de los que consta la captura, el índice de los grupos, y dando por hecho que se utilice el símbolo "$" para interpretar un grupo, entonces solo debemos inercambiar los grupos en el orden deseado, por ejemplo, la unión de los grupos "$4$2$3$1$5" o también "Mundo, $1!" darían cómo resultado:
Código:
Mundo, Hola!



El programa o lenguaje que estés utilizando debe tener funcionalidades de reemplazado (o replace) cómo te ha comentado el compañero Engel Lex.

Cabe mencionar que existen diferencias de sintaxis del motor Regex puede dependiendo del lenguaje en el que se utilice, por ejemplo te puedes encontrar que los grupos se representan con un símbolo/sintaxis diferente en otro lenguaje de scripting,
además de eso, en lenguajes orientados a objetos, el manejo de los grupos se suele hacer mediante el uso de miembros (classes y propiedades), en lugar de interpretar símbolos cómo "$0".

Lee las documentación de la Wikipedia, que muy pocas fuentes superan esta información:
Regular expression - Wikipedia, the free encyclopedia
 
Por último, te muestro un ejemplo en VB.Net (en C# sería lo mismo):

Código
  1. Imports System.Text.RegularExpressions
  2.  
  3. Public NotInheritable Class Form1
  4.  
  5.    Dim input As String = "Hola, Mundo!"
  6.    Dim format As String
  7.    Dim replace As String
  8.  
  9.    Dim regEx As New Regex("(.+)(\,)(\s+)(.+)(\!)", RegexOptions.IgnoreCase)
  10.  
  11.    Private Sub Test() Handles MyBase.Shown
  12.  
  13.        Dim matches As MatchCollection = regEx.Matches(input)
  14.        Dim value1 As String = matches(0).Groups(1).Value ' "Hola"
  15.        Dim value2 As String = matches(0).Groups(2).Value ' ","
  16.        Dim value3 As String = matches(0).Groups(3).Value ' " "
  17.        Dim value4 As String = matches(0).Groups(4).Value ' "Mundo"
  18.        Dim value5 As String = matches(0).Groups(5).Value ' "!"
  19.  
  20.        format = String.Format("{0}{1}{2}{3}{4}",
  21.                               value4, value2, value3, value1, value5)
  22.  
  23.        replace = input.Replace(value1, value4).
  24.                        Replace(value3 & value4, value3 & value1)
  25.  
  26.        Debug.Print(format)
  27.        Debug.Print(replace)
  28.  
  29.    End Sub
  30.  
  31. End Class

Saludos
« Última modificación: 19 Marzo 2015, 18:25 pm por Eleкtro » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como modificar una palabra por otra mas larga en V Basic
Ingeniería Inversa
ELDORADOV8 4 4,256 Último mensaje 18 Junio 2008, 22:58 pm
por Shaddy
Interpretar una palabra con otra (o remplazarla)
Scripting
z3nth10n 9 4,989 Último mensaje 27 Noviembre 2012, 16:25 pm
por z3nth10n
Sustituir cada palabra de 4 letras con asteriscos(lenguaje c) « 1 2 »
Programación C/C++
NOB2014 16 16,743 Último mensaje 8 Agosto 2014, 16:14 pm
por Blaster
imprimir una palabra vertical paralela a la otra
Programación C/C++
MellaSystems 3 3,735 Último mensaje 24 Febrero 2015, 04:30 am
por engel lex
Sustituir Ubuntu por otra distro, cual? « 1 2 »
GNU/Linux
marvin494d4c 11 5,617 Último mensaje 22 Abril 2017, 17:11 pm
por marvin494d4c
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines