2016-05-04 13 views
-4

に動作していないが、matchメソッドは正しく動作しません:たとえば正規表現の一致方法は、私は以下のように正規表現を作成している正しく

Regex regex = new Regex("(" + SearchText + ")", RegexOptions.IgnoreCase); 
if(regex.Match(item).Success) { ... } 

、私はe.SearchTextを設定している場合、私はesitemを設定しました、成功は真です。

同様に、SearchTextから$または.に設定した場合、4の一致は成功をtrueとして返します。

どのように起こっているのですか。この問題をどうやって解決できますか?

+2

一致するものと一致するSearchTextの値の例をいくつか追加してください。 –

+0

例として、私はSearchText "e"を持っています。 Matchテキストは "es"ですが、trueを返します。 –

+1

ええ、それは正規表現の仕組み... "任意の文字です –

答えて

4

リテラルだけを探しているのであれば、どうしてRegexを使うのですか?

string item = "bla bla e. bla"; 
bool result = item.Contains("e."); //returns true 

編集小文字を区別しない

ケース:

result = item.IndexOf("e.", 0, StringComparison.OrdinalIgnoreCase) != -1; 
+0

私のアプリケーションで私の内部目的のための正規表現が必要です –

+1

その場合、私は本当に本をつかむことをお勧めします... o'reillyの小さな1つはうまくいくでしょう。stackoverflowは、特定の問題であなたを助けることができますが、その場所は "どのように私は正規表現を学ぶのですか"ではありません。 –

+1

これは大文字と小文字を区別します。そして 'Contains'は' StringComparison'パラメータを持たないので、すべてを大文字または小文字に変換できます。または、それをサポートする[IndexOf'](https://msdn.microsoft.com/en-us/library/k8b1470s(v=vs.110).aspx)のようなものを使用してください。 – Chrono

4

あなたは正規表現を使用する場合は特別な意味を持っている一般的な文字の束があります。たとえば、期間(.)はすべての文字と一致しますので、dogとの単語を一致させるには、正規表現d.gを使用します。

使用できるさまざまな特殊文字があります。詳しくは、full .NET Regex documentationをご覧ください。

これは、文章の終わりのような特定のものに一致させたいときに、特定のものを少し複雑にすることを可能にします。 dog.と一致させるには、実際に一致する正規表現としてdog\.を渡す必要があります。 Regex.Escape(string str)メソッドを使用すると、Regexコンストラクタに渡す前に、ほとんどの単純な文字列をエスケープすることができます。

関連する問題