2010-08-04 9 views

Respuesta

6

Javascript sh Devolvería un objeto de matriz en una coincidencia de expresiones regulares, donde el índice cero de la matriz es la cadena completa que se combinó y los siguientes índices son los grupos de captura. En su caso algo así como:

var myVar = regexp.exec(myString)[1];

debe asignar el valor del grupo (.*?) captura a myVar.

+1

¿Esto no arrojará un error si no hay coincidencia? Devuelve nulo si no hay coincidencia, por lo que intentar acceder al índice de matriz de un objeto nulo arrojaría un error. –

6

(Citas de MDC)

Incluyendo paréntesis en un patrón de expresión regular hace que el subcoincidencia correspondiente para ser recordado. Por ejemplo, /a(b)c/ coincide con los caracteres 'abc' y recuerda 'b'.

Desde .*? es la primera (y única) recordado partido, utilizar $1 en su cadena de reemplazo:

var foo = myString.replace(regexp, '$1'); 

Editar: De acuerdo con su comentario, también pueden (tal vez con intención más clara) haga esto:

var foo = regexp.exec(myString)[1]; 
+0

, gracias osos. La cosa es que, en realidad, no quiero reemplazar todo, solo quiero saber cuál es el valor de. *? es. – morgancodes

+0

[Nick] (http://stackoverflow.com/users/21399/nick) acaba de comentar (y luego borró su comentario) que la primera versión también funcionará. Él está en lo correcto, pero creo que la intención de la versión 'replace' es menos clara que la intención de la versión' exec'. En cualquier caso, debe asignar el valor devuelto por 'replace' /' exec' a otra variable. –

0

Puede usar lookahead para parte de esta expresión regular. Ver aquí:

Regular expression for extracting a number

y/o aquí:

http://www.regular-expressions.info/lookaround.html

+0

Lookaround no es la respuesta. ¿Cómo se supone que eso ayuda? –

+0

[cita] Gracias, osos. La cosa es que, en realidad, no quiero reemplazar todo, solo quiero saber cuál es el valor de. *? es. - morgancodes hace 15 minutos – Skyler

+0

Para que puedan escribir una expresión regular que [EDITAR] coincida con <~~ include (. *?) ~~> y excluya la información que no desean. – Skyler

Cuestiones relacionadas