Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/08/2005, 07:40
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 1 mes
Puntos: 45
En que posicion se hizo matching

Mi problema viene de otro proyecto. En una cadena hago un match con una expresion regular. El match lo unico que me devuelve son las incidencias, pero no me dice dónde estan esas incidencias. Lo que quería es averiguar ese indice. Lo que ocurre es que haciendo un ".search" me devuelve la posición de la primera incidencia del argumento, y no tiene porqué ser esa la que se hizo matching.

Veamos, tengo este código:

Código PHP:
String.prototype.localizar=function(expReg,modif) {
    
expReg=new RegExp(expReg ,modif);
    
//hacemos el match
    
var q=this.match(expReg);
    
//este sera el array con el que hagamos return
    
devolver=new Array();
    
//añadimos a devolver todos los elementos del match (todas las incidencias)
    
devolver[devolver.length]=q;
    
//por cada incidencia, añadimos a devolver su posicion
    
for(var a=0a<q.lengtha++) {
        
//en esta linea es en la que falla
        
var p=this.search(q[a]);
        
devolver[devolver.length]=p;
    }
    return 
devolver;
}


var 
query="estereococo".localizar("[^aeiou][aeiou]","gi");
document.writequery ); 
La expresion regular busca una consonante seguida de una vocal en la palabra estereococo. El resultado es efectivamente, el esperado:
Cita:
te,re,co,co,2,4,7,7
En el matching se encuentra te-re-co-co. El penultimo "co" es estereococo, mientras que el ultimo es estereococo. Pero claro, el search no los diferencia, busca la primera incidencia de "co" en estereococo, y la primera vez lo hace según lo que quiero: devuelve la posicion 7. Pero la segunda vez debería devolver 9, porque el segundo "co" esta en la posición 9.


¿Como puedo resolver esto? Sé que si en el search no utilizo expresiones regulares (como es el caso) es lo mismo que utilizar indexOf. indexOf tiene un segundo argumento que me ayudaría a determinarle desde dónde buscar, para que localize "co" desde la posición que yo quiero, pero no me ha salido.

¿A alguien se le ocurre como solventarlo?
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.