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

わんくま同盟

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

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

■85024 / 3階層)  正規表現の考え方がわかりません
□投稿者/ WebSurfer (1295回)-(2017/09/05(Tue) 15:53:15)
No85014 (夜叉丸 さん) に返信

ちょっとだけ調べてみましたが、

new RectangleF(20f, -20.856f, 100.123456789f, 50.9f);
 ↓↓
{X=20,Y=-20.856,Width=100.1235,Height=50.9}

という結果から、指数形式になることはない、数字として変な形(1.0.0 とか ---1 とか)
になることはない・・・とすれば、数字のところは「ハイフン、数字、ピリオドが一文字
以上」という条件のみでよさそうです。

であれば、以下のようにしてできると思います。

Rectangle re = new Rectangle(20, -20, 100, 50);
Console.WriteLine(re.ToString());
RectangleF rf = new RectangleF(20f, -20.856f, 100.123456789f, 50.9f);
Console.WriteLine(rf.ToString());

Regex regex = new Regex(@"
    ^                   # 開始のアンカー
    {X=                 # {X= という文字列で始まる 
    (?<X>[-0-9.]+)      # X という名前付グループ。ハイフン、数字、ピリオドが一文字以上
    ,Y=                 # ,Y= という文字列が来る
    (?<Y>[-0-9.]+)      # Y という名前付グループ。ハイフン、数字、ピリオドが一文字以上
    ,Width=             # ,Width= という文字列が来る
    (?<Width>[-0-9.]+)  # Width という名前付グループ。ハイフン、数字、ピリオドが一文字以上
    ,Height=            # ,Height= という文字列が来る
    (?<Height>[-0-9.]+) # Height という名前付グループ。ハイフン、数字、ピリオドが一文字以上
    }                   # } で終わる
    $                   # 終了のアンカー",
    RegexOptions.IgnorePatternWhitespace);

Match m = regex.Match(re.ToString());
GroupCollection g = m.Groups;
Console.WriteLine("X=" + g["X"].Value + ",Y=" + g["Y"].Value + 
    ",Width=" + g["Width"].Value + ",Height=" + g["Height"].Value);

m = regex.Match(rf.ToString());
g = m.Groups;
Console.WriteLine("X=" + g["X"].Value + ",Y=" + g["Y"].Value +
    ",Width=" + g["Width"].Value + ",Height=" + g["Height"].Value);

/*
結果は:
{X=20,Y=-20,Width=100,Height=50}
{X=20,Y=-20.856,Width=100.1235,Height=50.9}
X=20,Y=-20,Width=100,Height=50
X=20,Y=-20.856,Width=100.1235,Height=50.9
*/

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[2]: 正規表現の考え方がわかりません /夜叉丸 →Re[4]: 正規表現の考え方がわかりません /Hongliang
 
上記関連ツリー

正規表現の考え方がわかりません / 夜叉丸 (17/09/05(Tue) 09:40) #85005
Re[1]: 正規表現の考え方がわかりません / ペイビン (17/09/05(Tue) 10:05) #85007
│├ Re[2]: 正規表現の考え方がわかりません / WebSurfer (17/09/05(Tue) 10:54) #85009
│└ Re[2]: 正規表現の考え方がわかりません / 夜叉丸 (17/09/05(Tue) 12:46) #85013
Re[1]: 正規表現の考え方がわかりません / WebSurfer (17/09/05(Tue) 10:47) #85008
│└ Re[2]: 正規表現の考え方がわかりません / 夜叉丸 (17/09/05(Tue) 12:49) #85014
│  ├ Re[3]: 正規表現の考え方がわかりません / WebSurfer (17/09/05(Tue) 15:07) #85021
│  ├ 正規表現の考え方がわかりません / WebSurfer (17/09/05(Tue) 15:53) #85024 ←Now
│  │└ Re[4]: 正規表現の考え方がわかりません / Hongliang (17/09/05(Tue) 16:03) #85025
│  │  └ Re[5]: 正規表現の考え方がわかりません / WebSurfer (17/09/05(Tue) 17:16) #85026
│  │    └ Re[6]: 正規表現の考え方がわかりません / 魔界の仮面弁士 (17/09/05(Tue) 18:47) #85028
│  │      └ Re[7]: 正規表現の考え方がわかりません / 夜叉丸 (17/09/12(Tue) 11:49) #85128
│  │        └ Re[8]: 正規表現の考え方がわかりません / 魔界の仮面弁士 (17/09/12(Tue) 12:11) #85131
│  └ Re[3]: 正規表現の考え方がわかりません / WebSurfer (17/09/05(Tue) 19:27) #85030
│    └ Re[4]: 正規表現の考え方がわかりません / 夜叉丸 (17/09/12(Tue) 10:20) #85122
│      ├ Re[5]: 正規表現の考え方がわかりません / Hongliang (17/09/12(Tue) 10:38) #85123
│      │└ Re[6]: 正規表現の考え方がわかりません / 夜叉丸 (17/09/12(Tue) 10:48) #85124
│      └ Re[5]: 正規表現の考え方がわかりません / WebSurfer (17/09/12(Tue) 12:11) #85130
Re[1]: 正規表現の考え方がわかりません / 魔界の仮面弁士 (17/09/05(Tue) 10:57) #85010
  └ Re[2]: 正規表現の考え方がわかりません / 夜叉丸 (17/09/05(Tue) 13:55) #85015
    └ Re[3]: 正規表現の考え方がわかりません / Hongliang (17/09/05(Tue) 14:13) #85016
      └ Re[4]: 正規表現の考え方がわかりません / 夜叉丸 (17/09/05(Tue) 14:28) #85017
        └ Re[5]: 正規表現の考え方がわかりません / ペイビン (17/09/05(Tue) 14:37) #85019
          └ Re[6]: 正規表現の考え方がわかりません / 夜叉丸 (17/09/05(Tue) 14:49) #85020
            ├ Re[7]: 正規表現の考え方がわかりません / shu (17/09/05(Tue) 15:10) #85022
            └ Re[7]: 正規表現の考え方がわかりません / Hongliang (17/09/05(Tue) 15:43) #85023
              └ Re[8]: 正規表現の考え方がわかりません / ペイビン (17/09/05(Tue) 18:20) #85027
                └ Re[9]: 正規表現の考え方がわかりません / 夜叉丸 (17/09/12(Tue) 09:43) #85121

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信