2010-02-16 9 views
11

Estoy tratando de usar una expresión regular para buscar todas las subcadenas que comiencen con un signo igual (=) y termina con un punto y coma (;) con cualquier cantidad de caracteres intermedios. Debe ser algo como esto =*;Expresión regular con an = y a;

Por alguna razón, los iguales no se están registrando. ¿Hay algún tipo de personaje de escape que haga que la expresión regular observe mi signo igual?

Estoy trabajando en Java si eso tiene algo que ver con esta pregunta.

Respuesta

17

Esto puede ser lo que estás buscando. Debe especificar un juego de caracteres o carácter comodín al que está aplicando el asterisco.

"=([^;]*);" 

También puede utilizar el cuantificador renuente:

"=(.*?);" 

Usando el paréntesis que ahora tiene grupos. Creo que el primer grupo es todo el partido, y group[1] es el grupo que se encuentra dentro del paréntesis.

El código puede ser algo como:.

Regex r = new Regex("=([^;]*);"); 
Match m = r.Match(yourData); 
while (m.Success) { 
    string match = m.Groups[1]; 
    // match should be the text between the '=' and the ';'. 
} 
+0

Esto me dieron por lo que estaba buscando, pero es posible encontrar solamente lo que hay entre los delimitadores? En otras palabras, quiero obtener lo que está entre the = y; sin incluirlos realmente en la expresión. Gracias – chama

+1

Si agrega parens alrededor del valor que desea encontrar, puede utilizar uno de los métodos de grupo de Matcher() para recuperar solo el bit en parens. – mkb

+0

¿Cómo exactamente usaría el método group() para hacer esto? – chama

7

Este busca "cualquier número de signos =, incluyendo 0"

=*; 

Si desea "= seguido de cualquier número de otros personajes" que desea

=.*; 

Sin embargo, esa voluntad coinciden con avidez - si quieres juego flojo (para que deje de un grupo cuando se encuentra el siguiente punto y coma) es posible que desee:

=.*?; 
1

La expresión regular que proporcionó podría coincidir con ;, ===;, ..., ================;. ¿Qué hay de =.*; (o =.*?; si no es codicioso es necesario)?

1

Algo parecido a = *;

Cuestiones relacionadas