Ich analysiere durch eine CSV in zwei Kategorien zu exportieren: Übereinstimmungen und NonMatches über Powershell.Regex gegen einen ungeraden Wert
Die Daten im CSV ist als der folgende formated:
SamAccountName xx9999xx aa0000aa ab0909xc etc
Ich brauche einen regulären Ausdruck, der mir erlaubt, alle Spiele zu filtern, die die aa0000bb Namenskonvention und exportieren, die in eine csv folgen (gleiche mit denen, die nicht der Konvention aa0000bb entsprechen) Konvention (weil es ungerade ist): die ersten 2 sind Buchstaben von az, dann 4 Zahlen 0-9, dann 2 Buchstaben az. Das heißt, Sie Ich habe aa0000aa und by7690zi
Gerade jetzt haben:
Import-Csv "C:\Path\to\csv" | ForEach {
$Name =$_.SamAccountName;
$Name -Match '[a-z]+[a-z]+[0-9]+[0-9]+[0-9]+[0-9]+[a-z]+[a-z]'} | Out-Null; $Matches
oder
ForEach ($Name in $CSV)
{
If ($Name -Match '[a-z]+[a-z]+[0-9]+[0-9]+[0-9]+[0-9]+[a-z]+[a-z]')
{
Write-Host "$Matches"
}else{
Write-Host "No Match"
}
}
Beide scheinen ausgeben zufällige Dinge, die nicht korrekt sind. Ich denke (hoffe wirklich), dass es einen Weg gibt, durch den folgenden entsprechen:
a-z #For the first set of letters
0-9 #For the 4 digits
a-z #For the second set of letters
ie [a-z{2}]+[0-9{4}]+[a-z{2}]
Ich kann laufen, ein normales 'xx9999xx' -Match '[a-z]+[a-z]+[0-9]+[0-9]+[0-9]+[0-9]+[a-z]+[a-z]'
und es gibt true zurück, und dann
PS C:\Windows> $Matches
Name Value
---- -----
0 xx9999xx
Aber ich immer noch don verstehe nicht, wie man das massenhaft macht.
Können Sie Beispieleingänge und -ausgänge bereitstellen? Gibt es mehrere aa0000aa pro Eingabezeile? – Arluin
@Arluin - Nein, es ist ein einzigartiger Wert, also nur eine Instanz von aa0000aa, der nächste Wert wäre aa0000ab usw. – Benny