2010-07-26 106 views
12

Estoy tratando de escribir una expresión regular que selecciona todo entre dos caracteres.RegEx para seleccionar todo entre dos caracteres?

Por ejemplo, cuando la expresión regular se encuentra con un '§' lo quiero para seleccionar todo después de la señal '§', hasta el punto de que la expresión regular se encuentra con un ';'. Lo intenté con una mirada hacia atrás y mirando hacia adelante, pero realmente no hacen el truco.

Así que por ejemplo " § 1-2 bla; " debe devolver " 1-2 bla".

¡Cualquier ayuda sería muy apreciada!

+2

Por favor especificar la tecnología en la que se está trabajando, como expresión regular tiene muchos "sabores" con un poco diferentes sintaxis y capacidades. – Jay

+0

Espera, me perdí esta primera vez ... "Intenté con una mirada hacia atrás y mirando hacia adelante, pero realmente no hacen el truco". -- ¿Por qué no? ¿Qué salió mal? Es este JavaScript? –

+0

Porque soy nuevo en RegEx y no pude resolverlo ... Es RegEx en Actionscript 3, y realmente hace cosas raras de vez en cuando :) gracias por sus respuestas a todos, ¡de alguna manera funcionó! – Jaaq

Respuesta

3

Para un simple caso esto debe hacer:

§(.*); 

Podría ser necesario modificar si no desea permitir la anidación:

§(.*?); 
+2

Esto no es del todo correcto: el '. *' Es codicioso, por lo que la expresión coincidirá hasta el * último * ';' encontrado, no el primero. –

+0

@Peter: puede que no sea el problema para OP, y podría ser lo que realmente desea OP. – SilentGhost

+1

Bien basado en "hasta el punto en que la expresión regular encuentra un ';'" - Supongo que significa que * no debería * ser codicioso. –

18

Utilice esta expresión regular

(?<=§).*?(?=;) 
+0

:) buena sugerencia. Gracias. – Gopi

+0

Funciona mejor que la solución aceptada – Riccardo

+0

No es compatible con JavaScript – TetraDev

29

¿Qué tal

"§([^;]*);" 

Los caracteres seleccionados entre el § y ; están disponibles como grupo coincidencia 1.

+1

Esto funcionó para mí. Pero por curiosidad, también funcionó sin el punto y coma posterior. ¿Por qué es necesario? – uesports135

+0

Sí, no es necesario el punto y coma final. Funciona bien sin eso también. – MixCoded

+0

Funciona bien con JS – TetraDev

Cuestiones relacionadas