Je ne sait pas si vous voulez valider l'entrée et juste correspondance l'entrée ou si vous voulez extraire les données.
Si vous avez juste besoin de faire correspondre l'entrée pour le valider, puis:
^tcm:\d+(-\d+){1,2}$
ne correspondra s'il y a 2 ou 3 groupes de chiffres, pas moins, pas plus.
Si vous devez tenir compte des espaces qui peuvent se produire, vous pouvez modifier l'expression régulière comme ceci:
^tcm\s*:\s*\d+\s*(-\s*\d+){1,2}\s*$
Si vous voulez extraire chaque ensemble de chiffres:
En Perl, vous utiliseriez le tableau @result
qui contiendrait 2 ou 3 groupes de chiffres uniquement si le modèle entier correspondait (la chaîne subject
contient la ligne dont vous voulez extraire les données).
my @result = $subject =~ /^tcm:(\d+)-(\d+)(?:-(\d+))?$/;
En C#, vous pouvez faire la chose équivalente:
MatchCollection results = null;
Regex r = new Regex(@"^tcm:(\d+)-(\d+)(?:-(\d+))?$");
results = r.Matches(subject);
if ((results.Count == 2) || ((results.Count == 3))) {
// use results.Item[] to access each group of digits
} else {
// The subject doesn't match
}
Salut patrick, ce n'est pas constant, il peut y avoir n'importe quel nombre entre, minimum il peut être tcm: 0-0 et max peut être tcm: 0-0-0 –