web-dev-qa-db-fra.com

Regex pour 1 ou 2 chiffres, non alphanumérique en option, 2 alphas connus

Je me suis cogné la tête contre le mur en essayant de faire ce qui devrait être une simple expression régulière - je dois faire correspondre, par exemple 12po où le 12 la partie peut être composée d'un ou deux chiffres, puis d'un caractère non alphanumérique facultatif comme un :.-,_ etc, puis la chaîne po.

L'utilisation éventuelle va être dans C# mais j'aimerais qu'il fonctionne également en grep normal sur la ligne de commande. Je n'ai pas accès à C#, ce qui n'aide pas.

36
Ben
^[0-9]{1,2}[:.,-]?po$

Ajoutez tout autre caractère non alphanumérique autorisé entre parenthèses pour permettre également leur analyse.

56
eykanal
^\d{1,2}[\W_]?po$

\d définit un nombre et {1,2} signifie 1 ou deux de l'expression avant, \W définit un caractère non Word.

23
stema
^[0-9][0-9]?[^A-Za-z0-9]?po$

Vous pouvez le tester ici: http://www.regextester.com/

Pour l'utiliser en C #,

Regex r = new Regex(@"^[0-9][0-9]?[^A-Za-z0-9]?po$");
if (r.Match(someText).Success) {
   //Do Something
}

N'oubliez pas que @ est un symbole utile qui signifie que l'analyseur prend la chaîne à la lettre (par exemple, vous n'avez pas besoin d'écrire \\ pour une barre oblique inverse)

4
TimCodes.NET