2009-12-30 12 views

Respuesta

12
Regex.Matches(text, pattern).Count 
4
Regex.Matches(input, @"\d").Count 

Dado que esto se va a asignar una instancia de ajuste para cada partido, esto puede ser subóptimo en cuanto a rendimiento. Mi instinto sería hacer algo como lo siguiente:

input.Count(Char.IsDigit) 
+1

esto devolverá el número de caracteres de una cadena. "123 456" devolverá 6, aunque solo hay 2 números. Correcto será Regex.Matches (entrada, @ "\ d +"). Conde –

+0

No está mal, pero esto es específico de cada caso. Otras coincidencias de expresiones regulares no se podrían contar sin tener una función separada – JustDaveN

0

La instancia MatchCollection de regresar de una llamada al método Partidos en RegEx le dará el recuento del número de coincidencias.

Sin embargo, lo que sospecho es que podría no ser el recuento el que está mal, pero es posible que deba ser más específico con su expresión regular (hacerlo menos ambicioso) para determinar las instancias específicas de la coincidencia querer.

Lo que tiene ahora debe darle todas las instancias de un solo número en una cadena, por lo que está obteniendo un resultado que cree que es incorrecto? Si es así, ¿puedes proporcionar la cadena y la expresión regular?

+0

lo siento, worng clic, publicado una respuesta en su lugar –

2
 var a = new Regex("[0-9]"); 
     Console.WriteLine(a.Matches("1234").Count); 
     Console.ReadKey(); 
-1
var regex = new Regex(@"\d+"); 
var input = "123 456"; 
Console.WriteLine(regex.Matches(input).Count); // 2 
// we want to count the numbers, not the number of digits 
Cuestiones relacionadas