2010-03-23 6 views
5

Dato una stringa nel formato: XXX999999v99 (dove X è un qualsiasi carattere alfa e v è un qualsiasi carattere numerico e v è un carattere v letterale) come posso ottenere un'espressione regolare da abbinare i caratteri numerici che seguono la v? Finora ho "v \ d \ d" che include la v ma idealmente vorrei solo la parte numerica.RegEx - Prendi tutti i caratteri numerici seguendo un carattere di testo

Come qualcuno conosce uno strumento in cui è possibile specificare una stringa da abbinare e generare la regex? Modificare una regex esistente è una cosa, ma trovo che partendo da zero sia doloroso!

Modifica: rilettura questa domanda Mi rendo conto che si legge come un compito a casa! Tuttavia, posso assicurarti che non lo è, le stringhe che sto cercando corrispondono corrispondono alle versioni dei prodotti aggiunte ai codici prodotto. Il codice corrente utilizza tutti i tipi di espressioni di sottostringa per recuperare la parte di versione.

risposta

4

Si può provare:

v(\d+)$ 
  • v: corrisponde al v letterale
  • \d: una sola cifra
  • \d+: una o più cifre.
  • (): raggruppamento che ricorda anche la parte abbinato, che può essere utilizzato tardi
  • $: fine anchor linea
+0

Quando provo questo la partita include il v carattere. È possibile rimuovere questo e solo restituire la parte numerica? Grazie per la risposta. – Simon

+0

@Simon: quando la regex trova una corrispondenza, il primo gruppo contiene sempre la stringa completa corrispondente alla regex. Dovresti controllare il secondo gruppo se hai bisogno di ottenere solo la parte catturata. –

+0

Duh, appena realizzato - rimuovi il carattere v dalla regex! – Simon

2

È necessario utilizzare un gruppo di cattura:

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

Fai attenzione, se non c'è alcuna corrispondenza nella stringa originale, questo codice genererà un'eccezione quando proverai ad accedere ai Gruppi [1]. –

1

Ci sono alcuni ottimi strumenti gratuiti per i test regex.

Prova: regex powertoy

o: RegExr

Ci sono anche alcuni programmi a pagamento come regex buddy

+0

Ho usato la versione online di RegExr ma trovo difficile andare avanti! – Simon

Problemi correlati