2011-01-20 6 views
17

の文字列に一致する正規表現を見つけようとしています。にドットが含まれていません。 stackoverflow42abc47またはa-bc-31_4に一致しますが、一致しません:.swp,またはtest.です。ドットが含まれていない文字列(正規表現を使用)を一致させる方法

+0

ちなみに、あなたが望むものを正確に反映するように質問を更新する必要があります。あなたはしたくないと思われますが、質問はあなたがドットをしたいことを示しています。 – Tom

答えて

28
^[^.]*$ 

たり、空の文字列にマッチするかどうかに応じて、

^[^.]+$ 

。一部のアプリケーションでは暗黙的に ^$が提供されている場合があります。例: HTML5 input element's pattern attribute

regular-expressions.infoサイトに関するさらに詳しい情報があります。

^[^.]*$ 

文字列全体にドットではありません、ゼロ以上の文字である:

+0

ありがとう、これは働いた! – tx31415

3

は、任意のドットを持っていない正規表現を使用してください。私が過去に使った正規表現ライブラリの中には、という完全一致を得る方法がありました。その場合、^$は必要ありません。あなたの質問に言語があると助けになります。

ところで、には正規表現を使用するがありません。あなたはJavaで言うことができる:

!someString.contains("."); 
+0

@tchrist - 私は自分の答えを更新しました。私は本当に正確に一致することを可能にする前にライブラリを使用しています。私はOPが「ドットではない」と言って問題を抱えていると考えました。また、私の「包含する」アプローチはかなり合理的だと思います。しかし、おそらくこれは宿題であるか、OPは正規表現を受け入れるライブラリを使用することを余儀なくされます。 – Tom

+0

私のソリューションはほとんどの言語で動作しますが、微妙なことがあります。 OPは詳細を提供します。また、括弧で囲まれたエスケープは(私が使用した言語で)うまくいくので、やりたいと思っています。 – Tom

+0

@Tom:私は正規表現の代わりに部分文字列のチェックが完全に合理的なアプローチであることに同意します。問題は宿題のように聞こえるか、何らかの形で頭の中に入ってしまいます。あなたが覚えていることは、Javaは、あなたがしなくてもアンカーを供給するための道をはずれてしまった、私が始めたことのない、厄介な 'マッチ'メソッドを持っているということです。これは、正規表現にJavaを使用するように強制されている場合にのみ、 'find'メソッドを使用する必要がある理由のいくつかの1つです(あまり良くありません)。他のほとんどの正規表現の言語はそれほど変わらない。ところで、あなたはまだ偽のバックスラッシュを持っています。それを削除し、私は私のdownvoteを削除します。 – tchrist

1

検証が必要:最初の文字は文字でなければならず、次にドット '。'ターゲット文字列では使用できません。

//使用している入力文字列 文字列入力= "1A_aaA";

 // The regular expression we use to match 
     Regex r1 = new Regex("^[A-Za-z][^.]*$"); //[\t\0x0020] tab and spaces. 

     // Match the input and write results 
     Match match = r1.Match(input); 
     if (match.Success) 
     { 
      Console.WriteLine("Valid: {0}", match.Value); 

     } 
     else 
     { 
      Console.WriteLine("Not Match"); 
     } 
関連する問題