2012-01-06 20 views
1

私は動作しないように見える正規表現のクエリに少し助けが必要です。C#正規表現

私は次の形式を確認する必要があり

:文字列 - 整数

文字列がstudyIDというパラメータとしてメソッドに渡されたので、それはstudyIDを確認してください - 整数「 - 」文字列リテラルで、そこをその両側にスペースがあります。

誰でも助けてください。

ありがとうございました。

+2

あなたは何を試しましたか、どのような結果が得られましたか?エラー、間違った結果? –

+0

私の最近の試みはregex = study.Id + "/ s-/s/d"でした。 –

+0

そして、この正規表現が動作するべき実際の値のいくつかの例を挙げることができますか? –

答えて

3

これはうまくいくはずです。私はあなたが試合を探していると仮定しています。

Regex r = new Regex(study.Id + "(\\s+)(-)(\\s+)(\\d+)"); 

\\ s +は任意の空白と\\ d +任意の整数を処理します。

2

\sのような特殊文字は、/sではなくエスケープされます。また、複数の桁を一致させる場合は、\d+を少なくとも1桁(Howardからのコメント)と一致させることができます。用

^(.+)(\s-\s)(\d+)$ 

:これと任意の数の使用 - 「」に続く任意の文字列、のため

その後study.Idがそうで[]+*などない「正規表現の文字を」持っていないことを自分自身を保証..

+3

'regex.Escape(...)'を使って 'study.Id'をエスケープすることができます。 – Howard

0

すべてを組み合わせる

^studyID(\s-\s)(\d+)$ 
0

:最初の文字列 "studyID" には、これを使用

var re = new Regex("^" + Regex.Escape(study.Id) + @"\s+-\s+(\d+)\z"); 

study.Idの内容をエスケープし、-の周りに複数の数字スペースを使用して、文字列の先頭または末尾に固定します。後者が望ましくない場合は、^\zを削除できます。