2012-03-09 26 views
0

記号*には正規表現(C#)が必要です。任意の数の任意の文字と一致する必要がありますが、スペースは1つしか含めることができません。私は次のように試みましたが、動作しません。正規表現

@".*[^[\t\0x0020]^[\t\0x0020]+].*" 
@".*[^\s^\s+].*" 
@".*[^\s\s+].*" 

どのようにこのような正規表現を作成するには?

例:それはいずれにも一致します

\S*\s?\S* 

:あなたはこの表現を使うことができ

MTN3111-0000 

なく

MTN311100 MTN3111-0000 
+0

あなたが合格と不合格の入力の例を作ることができますか? – mindandmedia

+0

例を追加... – SolidSnake

+0

'[^ \ s]'は、指定された文字セットにない文字と一致します。 –

答えて

6

例えば、ユーザの書き込み式MTN*-*は、それが一致しなければならない場合任意の文字数ですが、最大で1つのスペースしか使用できません。ここで

+0

主にこれです:^ \ S * \ s?\ S * $ – GianT971

+0

@Gian、いいえ、OPはアンカーしたくありません。より大きな表現の一部として使用されるためです。また、あなたの式では、ターゲット文字列の2つのスペースが許されている理由を理解しようとします。 ;-) – Qtax

+0

私の表現については、私はそれをテストするときに私は2つのスペースが入力されたときに良い結果に一致することはできません、あなたは何を言っているのですか? – GianT971

1

@"[^\s]*\s?[^\s]*" 

その後、このしようとここに他の要件

+0

ありがとう、でも、qtakソリューションはよりエレガントです:) –

+0

完全に合意しました。 – njzk2

0

に応じて、いくつかの詳細があるかもしれません。

([^\-]+\-[^\s]+)\s