2011-03-01 26 views
31

私は単純な正規表現でなければならないことをしようと壁に頭を打ちました - 一致する必要があります。例えば12部分1桁または2桁の数字を入力し、任意の英数字以外の数字(:.-,_など)を入力すると、文字列poとなります。1桁または2桁の正規表現、任意の非英数字、2つの既知の英字

最終的にはC#になりますが、コマンドラインでも通常grepで作業したいと思います。 C#にアクセスできませんでしたが、それは役に立ちません。

答えて

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

あなたがここでそれをテストすることができます。http://www.regextester.com/

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

は@パーサを意味有効シンボルである、覚えておいてください、C#でこれを使用するには、文字通りの文字列を取ります(例えば、あなたが1つのバックスラッシュに\\を書く必要はありません)

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

他の許容される非アルファ中括弧にも数字で区切って解析することができます。

+1

... ' - 'の前にそれらを追加すると、驚くべき結果が得られます。 –

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

\d数を定義し、{1,2}は前式の1又は2を意味し、\Wは、非単語文字を定義します。

+0

\ Wには_が含まれていません。 –

+0

が正しく、[\ W | _] – stema

+0

に変更されました。[\ W_]に修正されました。 –

関連する問題