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

わんくま同盟

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

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


(過去ログ 129 を表示中)
■76249 / )  正規表現が理解できません.
□投稿者/ よぽん (38回)-(2015/06/18(Thu) 15:31:19)

分類:[.NET 全般] 

タイトル通りですけど、正規表現が理解できません。

たとえば
Rectangle ra = new Rectangle(1, 2, 3, 4);
string s = ra.ToString(); ← s = "{X=1,Y=2,Width=3,Height=4}"

このような文字列から Rectangle を求めるのに以下のようにすれば良いとわかりました。

Match m = new Regex(@"(?<x>\w+),Y=(?<y>\w+),Width=(?<w>\w+),Height=(?<h>\w+)}").Match(value.ToString());
int ix = (int.TryParse(m.Groups["x"].ToString(), out ix)) ? ix : 0;
int iy = (int.TryParse(m.Groups["y"].ToString(), out iy)) ? iy : 0;
int iw = (int.TryParse(m.Groups["w"].ToString(), out iw)) ? iw : 0;
int ih = (int.TryParse(m.Groups["h"].ToString(), out ih)) ? ih : 0;
Value = new Rectangle(ix, iy, iw, ih);

でも、結局正規表現の説明がされているところを見つけることができないので

private void button1_Click(object sender, EventArgs e)
{
string s = "SUM(A1*B2)";

Match m = new Regex(@"SUM((?<x>\w+)*(?<y>\w+))").Match(s);
string ix0 = m.Groups["x"].ToString();
string iy0 = m.Groups["y"].ToString();

MessageBox.Show("[" + ix0 + "][" + iy0 + "]");

m = new Regex(@"SUM((?<x1>\w+)(?<y1>\w+)*(?<x2>\w+)(?<y2>\w+))").Match(s);
string ix1 = m.Groups["x1"].ToString();
string iy1 = m.Groups["y1"].ToString();
string ix2 = m.Groups["x2"].ToString();
string iy2 = m.Groups["y2"].ToString();

MessageBox.Show("[" + ix1 + "][" + iy1 + "][" + ix2 + "][" + iy2 + "]");

}

どちらも値をとってきません。

どうすればよいのでしょうか?
また、正規表現の使い方で詳しく優しい説明が書かれているところ
どこかに有りませんでしょうか?

返信 編集キー/


管理者用

- Child Tree -