Ich habe Worte annehmen A 1
, A 12
, A 123
, A 1234
und gleich für B 1
, B 12
, B 123
, B 1234
wo 123 bedeutet drei Ziffern Nun, als ich dies tun:Erhalten Sie volles Wort von Match C# nicht Gruppe
MatchCollection ForA1 = Regex.Matches(inFile, @"\b(A [0-9])\b");
MatchCollection ForA2 = Regex.Matches(inFile, @"\b(A [0-9][0-9])\b");
.... and so on for three and four digits and B; total 8 lines
den Code zu reduzieren ich dies getan:
MatchCollection ForAB1 = Regex.Matches(inFile, @"\b(A [0-9]|B [0-9])\b");
MatchCollection ForAB2 = Regex.Matches(inFile, @"\b(A [0-9][0-9]|B [0-9][0-9])\b");
.... and so on for three and four digits; total 4 lines
Jetzt möchte ich dies tun:
MatchCollection ForAB1234 = Regex.Matches(inFile, @"\b(A [0-9]|B [0-9]...
|A [0-9][0-9]|B [0-9][0-9] and so on for three and four digits)\b"); total 1 line
Zu dieser Zeit nach den Spielen Ich tue dies:
foreach (Match m in ForAB1)
{
//many calculations on the basis of index and length etc
}
Was ich will:
foreach (Match m in ForAB1)
{
if(Match is 'A [0-9]')
{//many calculations on the basis of index and length etc}
else...
}
Gibt es noch etwas einfach genug, so dass ich nicht brauchen Code einfach zu wiederholen wegen unterschiedlicher Anzahl der Ziffern? Ich suche nach allen eindeutigen Übereinstimmungen, die ich angegeben habe.
Edit: eigentliches Problem ist, ich will nicht m.len und dann prüfen, ob es A oder B ist, weil ich in Wirklichkeit mehr als dreißig solche Ausdrücke habe
keine Straftat verwenden, aber wenn Sie -1 diese Frage soll es richtiger Grund dafür sein, und ich denke, Sie es hier schreiben können –