2011-02-04 21 views
4

正規表現を使用して文字の後の値を取得しようとしています。この場合、文字列はm325であり、mの後ろの文字列を取得する必要があります。文字の後の正規表現

私のコードで何が間違っているのか教えていただけますか?

Regex rgMeter = new Regex("m(.+$"); 
intMeterID = Convert.ToInt32(rgMeter.Match(strID)); 

アップデート:すべてのあなたの答えのための

おかげで...何らかの理由で正規表現 "M(+)$" メートルだけでなく、私が必要とする文字列を返しています。私はグループの例を試して、私が望むデータを返します。これを行うにはなぜグループを使用する必要がありますか?

+0

あなたは私たちに完全な文字列を表示することができます。..彼らが同じ行または別の行にあります –

+0

あなたは正規表現に一致する閉じ括弧を持っていますか、それとも誤植ですか? –

+0

@ user517406 - 質問を更新したい場合は、簡単に編集できます。私は答えとしてあなたの追加のコメントをマージしました。 –

答えて

5

別に行方不明)から私はShekhar_Proが提供される解決策.. を使用する必要があり、あなたはそれを少し単純化。あなたは

Regex rgMeter = new Regex("m(.+)$"); 
intMeterID = Convert.ToInt32(rgMeter.Match(strID).Groups[1].Value); 

を行う必要があります(おそらく、あなたはMatch()が一致したかどうチェックを追加したい場合があります。)

1

"M(。+)$" 逃したように見える - そこに閉鎖されていなかった(

1

が必要な正規表現は/^m(.*)$/

実際

あなたが\dを使うべきか、です[0-9]あなたがマッチ数字をしたい場合。

/^m([0-9]*)$/ 

/^m([0-9]{3})$/ 

常に存在している場合は3桁

0

簡単な「m個の\ dの*は」この操作を行う必要があります。..ケースを見るために私たちに文字列全体を表示してください。

2

締め切りが欠落しています。さらに、数値を抽出する場合は、数字だけに制限する必要があります。次のステートメントで、誤った文字列を整数に解析しようとしないでください。

m(\d*) 
1

また、あなたはそれをテストすることができます。http://gskinner.com/RegExr/

は何の値 "M" の文字の後ろに見えることができますか? それが唯一の整数だ場合は、任意の文字は、残りの部分で行く場合:)