Foros del Web » Programando para Internet » ASP Clásico »

Problema con RegExp

Estas en el tema de Problema con RegExp en el foro de ASP Clásico en Foros del Web. Hola El problemas me lo provoca los caracteres acentuados. Me explico Código HTML: marca = Trim(Request.QueryString("clave")) 'recoge valor del form, el valor está codificado con ...
  #1 (permalink)  
Antiguo 26/01/2008, 14:00
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Problema con RegExp

Hola

El problemas me lo provoca los caracteres acentuados.

Me explico

Código HTML:
marca = Trim(Request.QueryString("clave")) 'recoge valor del form, el valor está codificado con escape

IF marca = "" then
%>
<%=unescape(rs.Fields("txt"))%>
<%
ELSE
array_cadena  = Split(marca," ")
Function ResaltaParam(base)
strOriginal = unescape(rs.Fields("txt")) 'descodifico el campo BD
For i=0 to UBound(array_cadena)
paraBusq = "\b("&array_cadena(i)&")\b"
Dim objRegExp 
Set objRegExp = new RegExp
With objRegExp
.Pattern = paraBusq
.IgnoreCase = True
.Global = True
End With
base = objRegExp.replace(strOriginal, "<span class=""BC"&i&""">$1</span>")
ResaltaParam = base
Set objRegExp = nothing
Next 'i
End Function
%>
<%=ResaltaParam(strOriginal)%>
<%
END IF
%> 
Bien, todo funciona hasta que ha de encontrar la cadena "sí" recogida desde el form "s%ED".
En este caso se marca, por ejemplo, la cadena "así", aunque en la BD aparece como "as%ED".
Lo que me dice que el problema está en la expresión que estoy usando \b("&array_cadena(i)&")\b

¿Qué he de hacer para que si busco en la BD la palabra "ón" me encuentre solamente "ón" y no "camión"?

Gracias
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #2 (permalink)  
Antiguo 27/01/2008, 11:12
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: Problema con RegExp

buena pregunta Adler

solamente lo que sea identico
Cita:
texto = '" & textoabuscar & "'
que termine con la palabra
Cita:
texto LIKE '%" & textoabuscar & "'
que empiece con la palabra
Cita:
texto LIKE '" & textoabuscar & "%'
en cualquier parte que contenga la palabra
Cita:
texto LIKE '%" & textoabuscar & "%'
cual de estas combinaciones sera la que te funcione a tus propositos???

ahora podrias tambien utilizar Escape(palabra) dentro de la misma funcion de busqueda para que te codifique los acentos, si en dado caso no encuentre palabras por este suceso

pero en estos casos son pruebas y pruebas

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #3 (permalink)  
Antiguo 27/01/2008, 15:58
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Re: Problema con RegExp

Gracias Shiryu_Libra por tu respuesta, pero creo, que no me expliqué bien

El asunto se trata de un buscador

1 Tengo el form para buscar en BD
2 Listo los resultados de la búsqueda
3 Abro uno de los registros. Por la Query le he paso su Id y la cadena que se introdujo en el form, para así resaltar en el documento las palabras que coincidan con la cadena.

Por ejemplo

Busco la cadena (qué)
Encuentra 10 registros
Abro uno de los registros y en el documento se resalta la palabra (qué) tantas veces como aparezca. El problema es que además de la palabra (qué) también se resalta la palabra (porqué).

De ahí que el problema esté en la expresión \b("&array_cadena(i)&")\b

La expresión dice que ha de haber un espacio a ambos lados de la palabra, para que sea verdadera. Pero aún así, resalta (porqué)

¿Qué he de modificar en expresión regular para que no sea verdadero (porqué)?

Gracias
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #4 (permalink)  
Antiguo 28/01/2008, 10:20
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: Problema con RegExp

con razon

bueno en ese sentido lo que pudieras realizar es lo siguiente
Cita:
original=request.form("txt")
modificado="<strong>" & original & "</strong>"
tu codigo de busqueda, y cuando tengas resultados cambias el despliegue por esta parte
Cita:
temp=replace(RS.Fields.Item("campo").value, original, resaltado)
response.write temp
intentalo y haber que tal

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #5 (permalink)  
Antiguo 29/01/2008, 08:41
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Re: Problema con RegExp

Lo que me comentas no me es válido

Cita:
temp=replace(RS.Fields.Item("campo").value, original, resaltado)
response.write temp
puesto que necesito que ignore mayúsculas y minúsculas. Además necesito hacer un ciclo para buscar todas las palabras que me llegan por la query, y no he conseguido hacer que funciones con el replace. Lo he logrado con un select, pero de esa forma sería imposible expresar todos los casos.

Así que finalmente he decidido dejarlo tal y como está. De esta forma parece haber menos contras que pros.

Te reitero mi agradecimiento por tu interés y ayuda
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #6 (permalink)  
Antiguo 29/01/2008, 09:35
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: Problema con RegExp

okas
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:22.