2011-03-01 3 views
31

Basit bir regex olması gereken şeyi yapmaya çalışırken kafamı duvara yaslamış oldum - Eşleştirmem gerekiyor, örneğin 12 bölümü Bir ya da iki basamaklı, daha sonra :.-,_ vb. gibi bir alfasayısal olmayan isteğe bağlı dizge, daha sonra po dizesi.1 veya 2 basamaklı regex, isteğe bağlı alfasayısal olmayan, bilinen 2 alfa

Nihai kullanım C# içinde olacak ancak komut satırında düzenli olarak grep çalışmasını istiyorum. C#'a erişimim yok, bu da yardımcı olmuyor.

cevap

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

Burada test edebilirsiniz: http://www.regextester.com/

C# Bunu kullanmak için

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

hatırla, @ ayrıştırıcı anlamıyla dize alır demektir yararlı bir sembolüdür (örn sen bir ters eğik çizgi yazmak için yazma yazma

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

sayısal parantezler de ayrıştırılmaları için ortadaki parantezlere ayrılır.

+1

... ancak bunları daha önce ekleyiniz veya şaşırtıcı sonuçlar elde edersiniz. –

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

\d sayısını tanımlar ve {1,2} 1 veya ekspresyon iki önce \W olmayan bir kelime karakteri tanımlamaktadır.

+0

\ W, _, –

+0

istediğini içermiyor. Bu doğru, [\ W | _] – stema

+0

olarak değiştirildi. [[\ W_] 'olarak düzeltildi. –