C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■85005 / )  正規表現の考え方がわかりません
□投稿者/ 夜叉丸 (69回)-(2017/09/05(Tue) 09:40:09)

分類:[.NET 全般] 

正規表現の考え方を教えてください

ra.ToString() = "{X=3, Y=6, Width=9, Height=12}"
Match m = new Regex(@"{X=(?<X>[-]*\d+),Y=(?<Y>[-]*\d+),Width=(?<Width>[-]*\d+),Height=(?<Height>[-]*\d+)}").Match(ra.ToString());
int ix = (int.TryParse(m.Groups["X"].ToString(), out ix)) ? ix : 0;

この場合
"3" = "(?<X>[-]*\d+)" であらわされるということですよね。

?<X> でグループを表す
[-] 連続した文字範囲の1文字     : あるかもしれないしないかもしれないマイナスフラグ
* 直前の文字が0回以上繰り返す。  : なので先頭だから繰り返さないので0回以上?
\d 0から9までの数字       : 数字を使用
+ 直前の文字が1回以上繰り返す。 : 数字が連続する

で認識しました。
ところが同様にfloat の場合どうすればよいのかわかりません。

raf.ToString() = "{X=3.1, Y=6.2, Width=9.3, Height=12.4}"

"?<X>[-]*\d+" ここまではそのまま使えばよいと思いますが

.はあるかもしれないしないかもしれないので [.] を使いました。"?<X>[-]*\d+[.]"
次に来るのは数字ですが、前に '.' があるかもしれないので 直前の文字が0回以上繰り返すを使用して
"?<X>[-]*\d+[.]*\d"
としたのですがだめでした。

また、.も文字だからとして
(?<X>[-]*\w+)
これもだめでした。

正規表現の考え方が全く分からないのですが
どうすれば理解できるのでしょうか?

返信 編集キー/


管理者用

- Child Tree -