2010-03-23 31 views
5

Dada una cadena en el formato: XXX999999v99 (donde X es cualquier carácter alfa y v es cualquier carácter numérico yv es un carácter v literal) cómo puedo obtener una expresión regular para que coincida los caracteres numéricos que siguen al v? Hasta ahora tengo 'v \ d \ d' que incluye la v pero idealmente me gustaría solo la parte numérica.RegEx: toma todos los caracteres numéricos después de un carácter de texto

Como un lado, ¿alguien sabe de una herramienta en la que puede especificar una cadena para que coincida y generar la expresión regular? ¡Modificar una expresión regular existente es una cosa, pero creo que empezar de cero es doloroso!

Editar: Relectura de esta pregunta Me doy cuenta de que se parece a una tarea de tarea. Sin embargo, puedo asegurarle que no es así, las cadenas con las que trato de coincidir representan las versiones de productos adjuntas a los códigos de productos. El código actual usa todo tipo de expresiones de subcadenas para recuperar la parte de la versión.

Respuesta

4

Usted puede tratar de:

v(\d+)$ 
  • v: coincide con el literal v
  • \d: un solo dígito
  • \d+: uno o más dígitos.
  • (): agrupación que también recuerda la parte coincidente, que puede ser utilizado tarde
  • $: fin de anclaje línea
+0

Cuando intento este partido incluye el carácter v. ¿Es posible eliminar esto y solo devolver la parte numérica? Gracias por responder. – Simon

+0

@Simon: cuando la expresión regular encuentra una coincidencia, el primer grupo siempre contiene la cadena completa que coincide con la expresión regular. Debería consultar el segundo grupo si necesita obtener solo la parte capturada. –

+0

Duh, acabo de dar cuenta - ¡elimine el v char de la expresión regular! – Simon

2

Es necesario utilizar un grupo de captura:

Regex.Match("XXX999999v99",@"v(\d+)").Groups[1].Value 
+0

Tenga cuidado, si no hay coincidencia en la cadena original, este código emitirá una excepción cuando intente acceder a Grupos [1]. –

1

Hay algunas excelentes herramientas gratuitas para las pruebas de expresiones regulares.

Probar: regex powertoy

o: RegExr

También hay algunos programas de pago como regex buddy

+0

¡He estado usando la versión en línea de RegExr pero me resulta difícil ponerme en marcha! – Simon

Cuestiones relacionadas