2011-01-03 10 views
13

基本的に、私は正規表現でURLにマッチするコードをいくつか持っています。次にURLが一致する正規表現に基づいて関数を呼び出します。複数の関数は、URLのために呼ばれるようにするために私がしたいことはありませんし、私は正規表現は、例えば「正確な」正規表現を完全一致でのみマッチさせる方法は?

であることを持って一致して欲しい、簡単なURL /と私は/にマッチする単純な正規表現/を使用しますが、 /foo/foo/barのようなものにも一致します。

C#/ Netでこの部分一致動作を防止するにはどうすればよいですか?

+1

独自のルートディスパッチャーをローリングするのではなく、.NET URLルーティングを試したことがありますか? –

+0

@JacobKrallあなたはそれを言及すべきである面白いです。私は、この質問の1ヶ月後のような自分のURLルーティング(.Netの方法よりはるかにスタンドアロンな方法で)を実装しました:P – Earlz

答えて

25

文字列の先頭を一致させる場合は^、文字列の最後を一致させる場合は$を使用します。

たとえば、^/$は、/と一致しますが、/fooではありません。そして^//fooに一致しますが、foo/には一致しません。

+0

うーん。私はこれで動作するいくつかの正規表現を変更する必要があったが、これは答えと思われる。私はこれを行うことが可能であるかどうか確信していませんでした。正規表現をわずかに変更するだけです – Earlz

-2

一致させたいキーワードの先頭と最後にスペースを追加します。 たとえば、文字列"Hey! foobar I am foo bar."があります。ここでfooと一致させたいとします。 これを行うことができます/\s+foo\s+/iこれはfoobarではなくfooに対してのみ一致を返します。

+1

単語が最初の文字列または文章または文字列の最後である場合、これは機能しません。 – Mat

関連する問題