|
分類:[.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 + "]"); }
どちらも値をとってきません。
どうすればよいのでしょうか? また、正規表現の使い方で詳しく優しい説明が書かれているところ どこかに有りませんでしょうか?
|